BZOJ 1257(分塊思想)

2021-10-07 22:37:20 字數 1606 閱讀 6901

題意:給定n,k

n,kn,

k,問∑i=

1nkm

od

i\sum_^k\bmod i

∑i=1n​

kmod

i,其中1≤n

,k≤1

09

1\leq n,k\leq 10^9

1≤n,k≤

109題解:

由:k  mo

di=k

−⌊ki

⌋×

ik \bmod i = k - \lfloor \frac \rfloor \times i

kmodi=

k−⌊i

k​⌋×

i得:∑i=

1nkm

odi=

n×k−

∑i=1

n⌊ki

⌋×

i\sum_^k\bmod i = n\times k - \sum_^n \lfloor \frac \rfloor\times i

∑i=1n​

kmod

i=n×

k−∑i

=1n​

⌊ik​

⌋×i

可以知道一定有一些數i

ii的⌊ki

⌋\lfloor \frac \rfloor

⌊ik​

⌋相同,這裡採用分塊思想:

同一塊數的⌊ki

⌋\lfloor \frac \rfloor

⌊ik​

⌋相同,長度為min

(n,k

/(k/

i))−

i+

1min(n, k / (k / i)) - i + 1

min(n,

k/(k

/i))

−i+1

,這裡的i

ii是乙個塊的左端點,min

(n,k

/(k/

i)

)min(n, k / (k / i))

min(n,

k/(k

/i))

是乙個塊的右端點。

這裡考慮k

kk和n

nn大小關係

**:

#include

using

namespace std;

typedef

long

long ll;

const

int n =

1e5+10;

struct node

;inline ll read()

while

(isdigit

(ch)

) x = x *

10+ ch -

'0', ch =

getchar()

;return x * f;

}void

solve()

printf

("%lld\n"

, res);}

intmain()

return0;

}

BZOJ1257 餘數之和,整除分塊

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值 其中k mod i表示k除以i的餘數。例如j 5,3 3 mod 1 3 mod 2 3 mod 3 3 mod 4 3 mod 5 0 1 0 3 3 7 輸入僅一行,包含兩個整數n,k。1 n ...

BZOJ 1257餘數之和

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值 其中k mod i表示k除以i的餘數。例如j 5,3 3 mod 1 3 mod 2 3 mod 3 3 mod 4 3 mod 5 0 1 0 3 3 7 輸入僅一行,包含兩個整數n,k。1 n ...

bzoj 1257 餘數之和sum 數學

time limit 5 sec memory limit 162 mb submit 3081 solved 1425 submit status discuss 給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的...