余数求和

余数求和

 

 长记性:1.除化乘逆元 2.每一步都取模 3.注意+mod

 1 #include <bits/stdc++.h>
 2 #include <ctime>
 3 #include <algorithm>
 4 #include <random>
 5 using namespace std;
 6 typedef long long ll;
 7 typedef unsigned long long ull;
 8 const int maxn = 2e4+10;
 9 const int mod = 1e9+7;
10 const int inf = 0x3f3f3f3f;
11 #define gok ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
12 #define pii pair<int,int>
13 #define fi first
14 #define se second
15 #define pb push_back
16 #define rep(i,first,second) for(int i=first;i<=second;i++)
17 #define dep(i,first,second) for(int i=first;i>=second;i--)
18 #define erep(i,u) for(int i=head[u];~i;i=e[i].nxt)
19 
20 ll n,ans,inv;
21 int main()
22 {
23     scanf("%lld",&n);
24     ans = (n%mod)*(n%mod)%mod;
25     inv=5e8+4;
26 
27     for(ll l=1ll,r;l<=n;l=r+1ll){
28         r=min(n/(n/l),n);
29         ans = (ans+(mod-((((n/l)%mod*(l+r)%mod)%mod*((r-l+1)%mod))%mod*(inv%mod))%mod)%mod)%mod;
30     }
31     printf("%lld\n",ans);
32     return 0;
33 }

 

posted @ 2020-04-25 16:40  swsyya  阅读(322)  评论(0编辑  收藏  举报

回到顶部