bzoj2956 模积和 (分块)

2019-04-13 16:56发布

bzoj2956 模积和

原题地址http://www.lydsy.com/JudgeOnline/problem.php?id=2956 题意:
求∑∑((n mod i)*(m mod j)),其中1<=i<=n,1<=j<=m,i≠j。答案 mod 19940417 数据范围
n,m<=10^9 题解:
ni=1mj=1((n mod i)(m mod j))   (ij)
=ni=1mj=1((n mod i)(m mod j))min(n,m)i=1((n mod i)(m mod i)) 前一部分
=ni=1mj=1((nini)(mjmj))
=ni=1(nini)mj=1(mjmj)
可以分块做。 后一部分=min(n,m)i=1((n mod i)(m mod i))
=min(n,m)i=1((nini)(mimi))
=min(n,m)i=1(nminimimin+i2mini)
也可以分块做。 其中用到了 1+2+..+n=(1+n)n2
12+22+..+n2=n(1+n)(2n+1)6