Morass

Jewel eating Monster

Jul 24th, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. //This code is wrong! Sorry :'(
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. #define F(W) for(int i(0);i<W;++i)
  6. #define FF(W) for(int j(0);j<W;++j)
  7. #define FT(I,W) for(int k(I);k<W;++k)
  8. #define ZERO (1e-10)
  9. #define EPS ZERO
  10. #define INF (1<<30)
  11. #define LINF (1LL<<60)
  12. #define NINF (-(1<<30))
  13. #define MP(A,B) make_pair(A,B)
  14. #define CL(A,I) (memset(A,I,sizeof(A)))
  15. #define ADD(A,B,V) (g[A].push_back(B),g[B].push_back(A),v[A].push_back(V),v[B].push_back(V))
  16. #define add(A,B) (g[A].push_back(B),g[B].push_back(A))
  17. #define DEB printf("DEB!\n");
  18. #define DEX printf("DD2!\n");
  19. #define EQ(A,B) (A+ZERO>B&&A-ZERO<B)
  20. typedef long long ll;
  21. typedef pair<ll, ll> pll;
  22. typedef vector<int> vi;
  23. typedef pair<int, int> ii;
  24. #define REP(i, n) for (int i = 0; i < n; i++)
  25. #define IN(n) int n; cin >> n;
  26. #define PB push_back
  27. ll X,A,N,C;
  28. ll pw(ll n,ll k){
  29.     ll r(1);
  30.     while(k){
  31.         if(k&1)
  32.             r*=n,r%=C;
  33.         n*=n,n%=C;
  34.         k>>=1;
  35.     }
  36.     return r;
  37. }
  38. ll gcdE(ll a,ll m,ll &x,ll &y){
  39.     if(!a)return x=0,y=1,m;
  40.     ll u,v,g(gcdE(m%a,a,u,v));
  41.     return x=v-(m/a)*u,y=u,g;
  42. }
  43. ll inv(ll a,ll m=C){
  44.     ll x,y,g(gcdE(a,m,x,y));
  45.     return g==1?(x%m+m)%m:-1;
  46. }
  47. #define MD(W) ((W)%C)
  48. ll spec(ll N,ll X,ll A){
  49.     return MD(MD(pw(A,N)*MD(A*(X-1)-X)+A)*inv(A-1));
  50. }
  51. int main(void){
  52.     while(scanf("%lld%lld%lld%lld",&X,&A,&N,&C),X)
  53.         printf("%lld\n",spec(N,X,A));
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment