#include <cstdio>
#include <algorithm>
typedef long long int64;
const int MOD = 1e9+7;
inline int qpow(int b, int p, int mod) {
int res=1;
while(p){
if(p&1) res=(int64)res*b%mod;
b=(int64)b*b%mod;
p>>=1;
}
return res;
}
inline int gcd(int x, int y) {
int t;
while(y){
t=x%y;
x=y;
y=t;
}
return x;
}
inline int abs(int x) { return x<0?-x:x; }
inline int f(int n, int m) {
int i, j;
int res=0;
if(n>m) std::swap(n, m);
for(i=1; i<=n; i++) {
res=(res + (int64)(i-1)*i/2)%MOD;
res=(res + (int64)(m-i)*(m-i+1)/2 )%MOD;
}
return res;
}
int main() {
freopen("land.in", "r", stdin);
freopen("land.out", "w", stdout);
int i, j;
int T, n, m, a, x1, x2, y1, y2;
int ans;
scanf("%d %d %d %d", &T, &n, &m, &a);
while(T--){
ans=0;
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
if(a){
for(i=x1; i<=x2; i++)
for(j=y1; j<=y2; j++)
ans=(ans+(int64)abs(i-j)*qpow(gcd(i, j), a, MOD))%MOD;
}
else
ans=(f(x2, y2)-f(x1-1, y2)-f(x2, y1-1)+f(x1-1, y1-1)+MOD*10ll)%MOD;
printf("%d\n", ans);
}
return 0;
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |