Dang_Quan_10_Tin

Untitled

Jun 3rd, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. #define NguyenDangQuan the_author
  2.  
  3. #include <bits/stdc++.h>
  4. #define all(x) x.begin(),x.end()
  5. #define mset(x, i) memset(x,i,sizeof(x))
  6. #define elif else if
  7. #define heap priority_queue
  8. #define fi first
  9. #define se second
  10. #define pb push_back
  11. #define ld long double
  12. #define ll long long
  13. #define ull unsigned long long
  14. #define task ""
  15. using namespace std;
  16.  
  17. int typetest;
  18. template<class T>
  19. void read(T &x){
  20.     register int c;
  21.     T neg = 1;
  22.     x = (T)0;
  23.     while ((c = getchar()) <= 47 || c >= 58)
  24.         if(c == '-') neg = -1;
  25.     for (; (c > 47 && c < 58); c = getchar()){
  26.         x = (x << 3) + (x << 1) + (T)(c - 48);
  27.     }
  28.     x *= neg;
  29. }
  30. inline void fastIOfileinput(){
  31.     ios_base:: sync_with_stdio(0);
  32.     cin.tie(0);
  33.     cout.tie(0);
  34. //  freopen(task".INP", "r", stdin);
  35. //  freopen(task".OUT", "w", stdout);
  36. //  freopen(task".in", "r", stdin);
  37. //  freopen(task".out", "w", stdout);
  38.     typetest = 0;
  39. }
  40.  
  41. const int N = 1e5 + 2;
  42. const ll mod = 111539768;
  43. ll m, n, k, x, y, u, v;
  44.  
  45. void Enter(){
  46.     cin >> m >> n >> k >> x >> y >> u >> v;
  47. }
  48.  
  49. ll Pow(ll a, ll b){
  50.     if(!(b ^ 0))
  51.         return 1;
  52.     ll t = Pow(a, b >> 1) % mod;
  53.     if(b & 1)
  54.         return t * t % mod * a % mod;
  55.     return t * t % mod;
  56. }
  57.  
  58. ll PowofPow(ll a, ll b){
  59.     return Pow(Pow(k, b), m);
  60. }
  61.  
  62. ll mul(ll a, ll b){
  63.     if(!(b ^ 0))
  64.         return 0;
  65.     ll t = mul(a, b >> 1) % mod;
  66.     if(b & 1)
  67.         return ( (t << 1) % mod +  a % mod ) % mod;
  68.     return (t << 1) % mod;
  69. }
  70.  
  71. ll col(ll a, ll b){
  72.     if(!(a ^ b))
  73.         return Pow(k, a) % mod;
  74.     ll t = col(a, (a + b - 1) >> 1) % mod;
  75.     ll v = (a + b - 1) >> 1;
  76.     if(((a + b - 1) & 1))
  77.         return ( (t + mul(Pow(k, v + 1), t)) % mod + Pow(k, b) ) % mod;
  78.     return (t + mul(Pow(k, v + 1), t)) % mod;
  79. }
  80.  
  81. ll row(ll a, ll b){
  82.     if(!(a ^ b))
  83.         return Pow(k, a);
  84.     ll t = row(a, (a + b - 1) >> 1) % mod;
  85.     ll v = (a + b - 1) >> 1;
  86.     if(((a + b - 1) & 1))
  87.         return ((t + mul(PowofPow(k, v + 1), t) ) % mod + PowofPow(k, b) )% mod;
  88.     return (t + mul(PowofPow(k, v + 1), t) ) % mod;
  89. }
  90.  
  91.  
  92. void solve(){
  93. //  cerr << (x - 1) * m << " " <<  (y - 1)  << "\n";
  94. //  cerr << Pow( k, (x - 1) * m + (y - 1) ) << "\n";
  95. //  cerr << v- y << " " << col( 0, v - y ) << "\n";
  96. //  cerr << u - x << " " << row(0, u - x) << "\n";
  97.     cout << mul( mul( mul(Pow(k, y - 1), Pow(Pow(k, x - 1), m ) ), col( 0, v - y ) ), row(0, u - x));
  98. }
  99.  
  100. signed main(){
  101.     fastIOfileinput();
  102.     if(typetest){
  103.         int t;
  104.         cin >> t;
  105.         while(t--){
  106.             Enter();
  107.             solve();
  108.         }
  109.     }
  110.     else{
  111.         Enter();
  112.         solve();
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment