CQOI2007 餘數求和

2021-08-16 22:51:51 字數 695 閱讀 6126

求 ans=(k%1)+(k%2)+…+(k%n)

這題目應該算是數論裡比較簡單的了 求 ∑

ni=1

kmod

i ∑i=

1nkm

od

i我們知道 a%b=a-b*(a/b) 即 ∑

ni=1

kmod

i=∑n

i=1[

k−i∗

(k/i

)]=n

∗k−∑

ni=1

i∗(k

/i) ∑i=

1nkm

odi=

∑i=1

n[k−

i∗(k

/i)]

=n∗k

−∑i=

1ni∗

(k/i

)數論中列舉形如 n/i的式子時 很大一部分 n/i 是連續不變的 我們可以分塊搞 而前面的 i 的和就可以用 等差數列求和公式求出來

分塊已經是套路了tat

bzoj 1257

luogu 2261

#include 

#include

#define ll long long

int main()

printf("%lld\n",ans);

return

0;}

CQOI2007 餘數求和

題面 這道題用到了數論分塊 首先什麼是數論分塊 顧名思義就是分塊在數論上的應用 不過非常神奇的一點是你如果不會分塊但你還是可以會數論分塊的 所求為 i 1nkm od i sum k mod i i 1 n kmod i將這個式子改為 i 1nk i ki sum k i left lfloor f...

CQOI2007 餘數求和

傳送門 或許這也算是道神仙題?題目描述非常直白,我們把式子轉化一下,其實就是求n k k i i。而k i是可以使用除法分塊來做的 假設t k i,如果t 0,那麼它的末端就是n,這個很顯然,如果不等於0的話,那麼末端就是k t。之後我們就神奇的過了這道題 極短。include include in...

CQOI2007 餘數求和

給出n,k求k 1 n每乙個數的和 首先將原始式子變形成為nk k 1 1 k 2 2.k n n 此處的除法都是向下取整,也就是說不可以使用運算律了。那麼我們通過簡化式子,得到了乙個不能用運算律的式子。此時我們發現不能暴力去算他。於是嘗試著找了一會規律,可得到乙個 以100為例 相同的用顏色標記出...