P2261-[CQOI2007]余数求和【数论,约数】
生活随笔
收集整理的這篇文章主要介紹了
P2261-[CQOI2007]余数求和【数论,约数】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
評測記錄:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2261
題目大意
求∑i=1nk%i\sum^{n}_{i=1}k\%i∑i=1n?k%i。
解題思路
將k%ik\%ik%i展開一下,k?i??k/i?k-i*\lfloor k/i\rfloork?i??k/i?,然后答案就是
∑i=1nk?i??k/i?\sum^{n}_{i=1}k-i*\lfloor k/i\rfloor∑i=1n?k?i??k/i?
將k取出來
nk?∑i=1ni??k/i?nk-\sum^{n}_{i=1}i*\lfloor k/i\rfloornk?∑i=1n?i??k/i?
然后用等差公式分多塊計算∑i=1ni??k/i?\sum^{n}_{i=1}i*\lfloor k/i\rfloor∑i=1n?i??k/i?
code
#include<cstdio> #include<algorithm> using namespace std; long long n,ans,k; int main() {scanf("%lld%lld",&n,&k);ans=n*k;for(int x=1,gx;x<=n;x=gx+1){gx=k/x?min(k/(k/x),n):n;ans-=(k/x)*(x+gx)*(gx-x+1)/2;}printf("%lld",ans); }總結
以上是生活随笔為你收集整理的P2261-[CQOI2007]余数求和【数论,约数】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROG手机双十一特惠 直降100元 还可
- 下一篇: 荣耀双11开门红:荣耀Magic Vs2