求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j。
第一行兩個數n,m。
乙個整數表示答案mod 19940417的值
3 41
樣例說明
答案為(3 mod 1)*(4 mod 2)+(3 mod 1) * (4 mod 3)+(3 mod 1) * (4 mod 4) + (3 mod 2) * (4 mod 1) + (3 mod 2) * (4 mod 3) + (3 mod 2) * (4 mod 4) +
(3 mod 3) * (4 mod 1) + (3 mod 3) * (4 mod 2) + (3 mod 3) * (4 mod 4) = 1
資料規模和約定
對於100%的資料n,m<=10^9。
————————————————————————————————
$這道題\space 就很複雜qaq$
$我們先不考慮 i==j 的情況 $
$題目等價於 \sum _ ^n n-\lfloor \frac \rfloor*i$
$可以轉換為 n^2-\sum _ ^n \lfloor \frac \rfloor*i$
$現在我們可以來考慮i==j的情況了 $
$這個東西我們可以變成 \sum_^ (n-\lfloor \frac \rfloor *i)*(m-\lfloor \frac \rfloor)$
$我們可以把他拆出來$
$變成k*n*m-m\sum_^k \lfloor \frac \rfloor*i-n\sum_^k \lfloor \frac \rfloor*i + \sum_^k \lfloor \frac \rfloor *\lfloor \frac \rfloor$
$這樣就可以ac辣 $
#include#includeview code#include
#define ll long long
using
std::min;
const
int mod=19940417,p=3323403
;int
read()
while(c>='
0'&&c<='9')
return ans*f;
}ll n,m;
ll calc(ll n,ll k)
ll f(ll x)
intmain()
printf(
"%lld\n
",(ans+mod)%mod);
return0;
}
tips 求類似 $\sum _ ^n \lfloor \frac \rfloor*i$
我們可以利用程式內calc的寫法就可以辣2333
bzoj2956 模積和(數論)
先算出無限制的情況,再減去i j的情況。無限制的情況很好算,有限制的情況需要將式子拆開。注意最後的地方要用平方和公式,模數 1是6的倍數,於是逆元就是 模數 1 6 include include include include define mod x x mod?x mod x using na...
bzoj2956 模積和 數論
題目描述 求 n mod i m mod j 其中1 i n,1 j m,i j。輸入第一行兩個數n,m。輸出乙個整數表示答案mod 19940417的值 樣例輸入 3 4樣例輸出1題解 數論 分塊 由於直接求i j的情況比較難搞,所以我們可以先求出i可以等於j的和,然後再減去i等於j時的情況。也就...
bzoj2956 模積和 (分塊)
原題位址 題意 求 n mod i m mod j 其中1 i n,1 j m,i j。答案 mod 19940417 資料範圍 n,m 10 9 題解 n i 1 mj 1 nm odi mm odj i j ni 1 mj 1 nmod i mmod j min n,m i 1 nm odi m...