1 、取模(%mod) 运算的优先级与 * / 一样 , 故 在进行乘除%混合运算时注意运算次序从左往右就行
2、应用于对负数ans求模 ans =(ans + mod) %mod;
可以在输出答案时添上+mod防止负数的产生,并且对答案无影响(数论上可证明)
ll getsum(ll x)
{
ll ret = 0;
ll len = 1;
ll st1 = 1, st2 = 2;
bool oae = 1;
while(x > 0)
{
if(x <= len) len = x;
if(oae){
ret += (st1 + (len -1)%mod)%mod*(len%mod)%mod;
st1 += ((len%mod) << 1);
st1 %= mod;
}
else{
ret += (st2 + (len -1)%mod)%mod*(len%mod)%mod;
st2 += ((len%mod) << 1);
st2 %= mod;
}
ret %= mod;
oae ^= 1;
x -= len;
len <<= 1;
}
return ret;
}
int main(void)
{
io
ll l,r;
while(cin >> l >> r)
{
ll sumr = getsum(r), suml = getsum(l-1);
cout << (sumr - suml + mod)%mod << endl;
}
int main(void)
{
ll x1, y1, x2, y2;
cin >> x1 >> x2 >> y1 >> y2;
ll width = y2 - y1 + 1;
ll height = x2 - x1 + 1;
ll st = x1 + y1 - 1;
ll ed = x1 + y2 - 1;
ll line_val = (st + ed)%mod*(width%mod)/2%mod;
ll ans = line_val%mod*(height%mod)%mod
+ width%mod*(height%mod)%mod*((height - 1)%mod)/2;
ans %= mod;
cout << (ans<<1)%mod << endl;
}