BZOJ 2956 模積和 (分塊)

2021-08-19 07:36:40 字數 1172 閱讀 8427

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...