long long solve(int x, long long &y, char *n, int m) { if(n[0]=='1' && n[1]==0) { y = x; return 1; } bool f = isodd(n); rightshift(n); long long r = solve(x, y, n, m); r = r * (1 + y); y = y * y; if(f) { r = r + y; y = y * x; } y = y % m; return r % m; }
void randomization() { unsigned char ch; int a=0,j,k,i,check,nc1; int nl; long int nblock; int ii,jj,ii1,jj1; for(a=1; a<=times; a++) { check=a%5; switch(check) { case 0 : cycling(); upshift(); rightshift(); downshift(); leftshift(); downshift(); rightshift(); upshift(); cycling(); break; case 1 : leftshift(); cycling(); upshift(); rightshift(); downshift(); rightshift(); upshift(); cycling(); leftshift(); break; case 2 : downshift(); leftshift(); cycling(); upshift(); rightshift(); upshift(); cycling(); leftshift(); downshift(); break; case 3 : rightshift(); downshift(); leftshift(); cycling(); upshift(); cycling(); leftshift(); downshift(); rightshift(); break; case 4 : upshift(); rightshift(); downshift(); leftshift(); cycling(); leftshift(); downshift(); rightshift(); upshift(); break; } } }