Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define NguyenDangQuan the_author
- #include <bits/stdc++.h>
- #define all(x) x.begin(),x.end()
- #define mset(x, i) memset(x,i,sizeof(x))
- #define elif else if
- #define heap priority_queue
- #define fi first
- #define se second
- #define pb push_back
- #define ld long double
- #define ll long long
- #define ull unsigned long long
- #define task ""
- using namespace std;
- int typetest;
- template<class T>
- void read(T &x){
- register int c;
- T neg = 1;
- x = (T)0;
- while ((c = getchar()) <= 47 || c >= 58)
- if(c == '-') neg = -1;
- for (; (c > 47 && c < 58); c = getchar()){
- x = (x << 3) + (x << 1) + (T)(c - 48);
- }
- x *= neg;
- }
- inline void fastIOfileinput(){
- ios_base:: sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- // freopen(task".INP", "r", stdin);
- // freopen(task".OUT", "w", stdout);
- // freopen(task".in", "r", stdin);
- // freopen(task".out", "w", stdout);
- typetest = 0;
- }
- const int N = 1e5 + 2;
- const ll mod = 111539768;
- ll m, n, k, x, y, u, v;
- void Enter(){
- cin >> m >> n >> k >> x >> y >> u >> v;
- }
- ll Pow(ll a, ll b){
- if(!(b ^ 0))
- return 1;
- ll t = Pow(a, b >> 1) % mod;
- if(b & 1)
- return t * t % mod * a % mod;
- return t * t % mod;
- }
- ll PowofPow(ll a, ll b){
- return Pow(Pow(k, b), m);
- }
- ll mul(ll a, ll b){
- if(!(b ^ 0))
- return 0;
- ll t = mul(a, b >> 1) % mod;
- if(b & 1)
- return ( (t << 1) % mod + a % mod ) % mod;
- return (t << 1) % mod;
- }
- ll col(ll a, ll b){
- if(!(a ^ b))
- return Pow(k, a) % mod;
- ll t = col(a, (a + b - 1) >> 1) % mod;
- ll v = (a + b - 1) >> 1;
- if(((a + b - 1) & 1))
- return ( (t + mul(Pow(k, v + 1), t)) % mod + Pow(k, b) ) % mod;
- return (t + mul(Pow(k, v + 1), t)) % mod;
- }
- ll row(ll a, ll b){
- if(!(a ^ b))
- return Pow(k, a);
- ll t = row(a, (a + b - 1) >> 1) % mod;
- ll v = (a + b - 1) >> 1;
- if(((a + b - 1) & 1))
- return ((t + mul(PowofPow(k, v + 1), t) ) % mod + PowofPow(k, b) )% mod;
- return (t + mul(PowofPow(k, v + 1), t) ) % mod;
- }
- void solve(){
- // cerr << (x - 1) * m << " " << (y - 1) << "\n";
- // cerr << Pow( k, (x - 1) * m + (y - 1) ) << "\n";
- // cerr << v- y << " " << col( 0, v - y ) << "\n";
- // cerr << u - x << " " << row(0, u - x) << "\n";
- cout << mul( mul( mul(Pow(k, y - 1), Pow(Pow(k, x - 1), m ) ), col( 0, v - y ) ), row(0, u - x));
- }
- signed main(){
- fastIOfileinput();
- if(typetest){
- int t;
- cin >> t;
- while(t--){
- Enter();
- solve();
- }
- }
- else{
- Enter();
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment