bzoj1257: [CQOI2007]余數之和sum
阿新 • • 發佈:2017-11-26
blank div str 余數 sin mil define algo return
正解找規律.... %%%AKCqhzdy(看這位大神的博客吧!) 傳送門
1257: [CQOI2007]余數之和sum
Description
給出正整數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
Input
輸入僅一行,包含兩個整數n, k。
Output
輸出僅一行,即j(n, k)。
Sample Input
5 3Sample Output
7HINT
50%的數據滿足:1<=n, k<=1000 100%的數據滿足:1<=n ,k<=10^9
正解找規律.... %%%AKCqhzdy(看這位大神的博客吧!) 傳送門
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define qread(x)x=read(); using namespace std; typedef longlong LL; inline int read() { int f=1,x=0;char ch; while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘ && ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return f*x; } LL n,k; int main() { qread(n);qread(k); LL ans=0; for(LL l=1,r;l<=n;l=r+1,r=n) { LL s=k/l; if(s!=0)r=min(k/s,n); ans+=(k-s*l+k-s*r)*(r-l+1)/2; } printf("%lld",ans); return 0; }
bzoj1257: [CQOI2007]余數之和sum