P2261 CQOI2007 餘數求和

2022-03-13 05:07:16 字數 642 閱讀 7921

我是題面

題意還是很清晰,很容易理解

1e9範圍明顯不能暴力,除非你能把常數優化到\(\frac1 \),但我實在想象不到用了這麼多取模怎麼把常數優化下去

我們可以把\(k\%i\)變成\(k-k/i*i\)(整除)

那麼總的和也就從\(\sum_^k\%i\)變成了\(\sum_^n k-k/i*i\),又可以轉化為\(nk-\sum_^n k/i*i\)

\(k/i\)的值只有有\(\sqrt k\)種,且相同的值都是連續出現的,所以我們可以直接利用等差數列求\(\sum_^n k/i*i\)

下面放**吧

#include#include#include#include#include#define ll long long

#define gc getchar

using namespace std;

inline ll read()

while(isdigit(p))

return f?-a:a;

}ll n,k,ans;

int main()

ans=n*k-ans;

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 餘數求和

數學題,無背景 給出正整數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 餘數求和

這道題看上去很簡單,暴力隨便打,30分拿到手。但是顯然你拿30分你就炸了。我們開始考慮優化。發現每乙個 都是風馬牛不相及的,我們考慮轉換。可以發現取膜的性質 a mod b a b times lfloor frac rfloor 然後這個答案就可以轉換為 sum rfloor 用乘法分配律可以把 ...