bzoj 1257的加強版,多了乙個?那就把它展開來啦。 ∑i
=1n∑
j=1m
(nmo
di)∗
(mmo
dj)(
i!=j
) =∑
i=1n
∑j=1
m(nm
odi)
∗(mm
odj)
−∑i=
1n(n
−⌊ni
⌋∗i)
∗(m−
⌊mi⌋
∗i)
=∑i=
1n∑j
=1m(
nmod
i)∗(
mmod
j)−∑
i=1n
(nm−
n∗⌊m
i⌋∗i
−m∗⌊
ni⌋∗
i+⌊n
i⌋∗⌊
mi⌋∗
i2)
用公式求出∑i
和 ∑i
2 即可。
有模數那就把乘變成逆元吧(全都要變啊qwq)
本來大意了一下所以錯了好多次emm
還以為是longlong的鍋
//suplex
#include
#include
#include
#include
#include
using namespace std;
const int
mod=19940417;
const long
long inv6=3323403;
const long
long inv2=9970209;
long
long n,m,next;
long
long ans,s1,s2,s3;
long
long calc(long
long x)
return res;
}inline long
long
sum(long
long x)
int main()
printf("%lld\n",ans);
return
0;}
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...
BZOJ2956 模積和 分塊
求 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 m...
BZOJ 2956 模積和 分塊 數學
一開始忘記了平方數列求和,鬱悶 sum n n n 1 2 n 1 6 其實打乙個表是看得出規律的,但是要進行運算我們還是得把他變成數學公式才可以啊 對於取模運算 n i n ni i化簡以後就是喜聞樂見地 分塊了 include include include define inv 3323403...