P2261 CQOI2007 餘數求和

2022-08-13 01:09:20 字數 469 閱讀 9271

這道題看上去很簡單,暴力隨便打,30分拿到手。但是顯然你拿30分你就炸了。

我們開始考慮優化。

發現每乙個%都是風馬牛不相及的,我們考慮轉換。

可以發現取膜的性質:

\[a \mod b = a - b \times \lfloor \frac\rfloor

\]然後這個答案就可以轉換為\(\sum_^\rfloor}\)

用乘法分配律可以把\(k\)提取,然後問題就是求出\(\sum\rfloor}\)了。

可以發現這個向下取整的東西在一定區間範圍內是一樣的,我們可以把這些一樣的一起算成一遍,這樣複雜度一定小於\(o(n)\)。

**:

#include#includelong long n, k, ans;

int main()

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

return 0;

}

P2261 CQOI2007 餘數求和

數學題,無背景 給出正整數n和k,計算g n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。例如g 10,5 5 mod 1 5 mod 2 5 mod 3 5 mod 4 5 mod 5 5 mod 10 0 1 2 1 0 5 5 ...

P2261 CQOI2007 餘數求和

我是題面 題意還是很清晰,很容易理解 1e9範圍明顯不能暴力,除非你能把常數優化到 frac1 但我實在想象不到用了這麼多取模怎麼把常數優化下去 我們可以把 k i 變成 k k i i 整除 那麼總的和也就從 sum k i 變成了 sum n k k i i 又可以轉化為 nk sum n k ...

P2261 CQOI2007 餘數求和

數學題,無背景 給出正整數n和k,計算g n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。例如g 10,5 5 mod 1 5 mod 2 5 mod 3 5 mod 4 5 mod 5 5 mod 10 0 1 2 1 0 5 5 ...