F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n)。其中%表示Mod,也就是余数。 
例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。
给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。
Input
Output
Input示例
Output示例

 

 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 }

 

相关文章:

  • 2021-09-25
  • 2022-02-17
  • 2021-08-06
  • 2021-06-08
  • 2022-02-11
  • 2021-12-18
  • 2021-10-19
猜你喜欢
  • 2021-10-05
  • 2021-05-19
  • 2021-10-25
  • 2022-02-06
  • 2021-06-17
  • 2021-07-13
相关资源
相似解决方案