1225 余数之和

来源:互联网 发布:湖北广电网络官网 编辑:程序博客网 时间:2024/05/20 21:45

找规律。。。边界要特殊考虑。。。

#include<bits/stdc++.h>using namespace std;const long long mod=1e9+7;long long multimod(long long x,long long y,long long mod){long long ret=0;while(y){if(y&1)ret=(ret+x)%mod;x=(x<<1)%mod;y>>=1;}return ret;}int main(){long long n,ans,sq,i,inv2=500000004;while(~scanf("%lld",&n)){sq=sqrt(n);ans=multimod(n,n,mod);for(i=1;i<=sq;i++){if(n/i==sq){ans=((ans-sq*sq)%mod+mod)%mod;continue;}ans=((ans-multimod(n/i,i,mod))%mod+mod)%mod;ans=((ans-multimod(multimod(i,multimod((n/i+n/(i+1)+1)%mod,(n/i-n/(i+1))%mod,mod),mod),inv2,mod))%mod+mod)%mod;}printf("%lld\n",ans);}}


0 0
原创粉丝点击