输入1个数N(2 <= N <= 10^12)。
输出F(n) Mod 1000000007的结果。
6
3
题意:求余数之和
题解:oies
1 #include <bits/stdc++.h> 2 #define ll __int64 3 using namespace std; 4 ll mod=1000000007; 5 ll ni=0; 6 ll pow(ll a,ll b) 7 { 8 ll re=1; 9 while(b) 10 { 11 if(b&1) 12 re=(re*a)%mod; 13 b>>=1; 14 a=(a*a)%mod; 15 } 16 return re; 17 } 18 ll sum(ll l,ll r) 19 { 20 return ((l+r)%mod)*((r-l+1)%mod)%mod*ni%mod; 21 } 22 int main() 23 { 24 ni=pow(2ll,mod-2); 25 ll n,r,ans=0; 26 scanf("%I64d",&n); 27 for(int ll i=1;i<=n;i=r+1){ 28 r=n/(n/i); 29 ans=(ans+(n/i)%mod*sum(i,r)%mod)%mod; 30 } 31 n%=mod; 32 printf("%I64d\n",(n*n%mod-ans+mod)%mod); 33 return 0; 34 }
原文:http://www.cnblogs.com/hsd-/p/6637558.html