给出正整数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
标签:script algo mod efi typedef algorithm turn ext pac
给出正整数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
输入仅一行,包含两个整数n, k。
输出仅一行,即j(n, k)。
50%的数据满足:1<=n, k<=1000 100%的数据满足:1<=n ,k<=10^9
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define qread(x)x=read(); using namespace std; typedef long long 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; }
标签:script algo mod efi typedef algorithm turn ext pac
原文地址:http://www.cnblogs.com/CHerish_OI/p/7899099.html