bzoj 4916 神犇和蒟蒻
2017-06-01 09:52
381 查看
//bzoj 4916 神犇与蒟蒻 #include<map> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 10000000 #define ll long long #define M(a) memset(a,0,sizeof a) #define fo(i,j,k) for(i=j;i<=k;i++) const int mxn=10000005; const int mod=1e9+7; using namespace std; map <int,int> mp; bool vis[mxn]; ll phi[mxn]; ll inv2,inv6; int m,T,pri[mxn]; inline ll ksm(ll x,int k) { if(k==1) return x; ll tmp=ksm(x,k>>1); if(k&1) return tmp*tmp%mod*x%mod; return tmp*tmp%mod; } inline void init() { int i,j; puts("1"); phi[1]=1; inv2=500000004; inv6=166666668; fo(i,2,N) { if(!vis[i]) pri[++pri[0]]=i,phi[i]=i-1; for(j=1;j<=pri[0] && (ll)i*pri[j]<=N;j++) { vis[i*pri[j]]=1; if(i%pri[j]==0) { phi[i*pri[j]]=phi[i]*pri[j]%mod; break; } phi[i*pri[j]]=phi[i]*(pri[j]-1)%mod; } } fo(i,1,N) phi[i]=phi[i]*i%mod; fo(i,1,N) phi[i]=(phi[i]+phi[i-1])%mod; } inline ll S(ll x) { return (x*(x+1)%mod*inv2)%mod; } inline ll solve(ll n) { int i,j; if(n<=N) return phi ; if(mp.count(n)) return mp ; ll now=n*(n+1)%mod*(n+n+1)%mod*inv6%mod,sum=0; for(int i=2,last=0;i<=n;i=last+1) { last=n/(n/i); sum=(sum+((S(last)-S(i-1)+mod))%mod*solve(n/i)%mod)%mod; } mp =(now-sum+mod)%mod; return (now-sum+mod)%mod; } int main() { int i,j; ll x; init(); scanf("%lld",&x); printf("%lld\n",solve(x)); return 0; }
4916: 神犇和蒟蒻
Time Limit: 10 Sec Memory Limit:512 MB
Submit: 82 Solved: 50
[Submit][Status][Discuss]
Description
很久很久以前,有一只神犇叫yzy;很久很久之后,有一只蒟蒻叫lty;
Input
请你读入一个整数N;1<=N<=1E9,A、B模1E9+7;Output
请你输出一个整数A=\sum_{i=1}^N{\mu (i^2)};请你输出一个整数B=\sum_{i=1}^N{\varphi (i^2)};
![](http://www.lydsy.com/JudgeOnline/upload/201705/11.png)
Sample Input
1Sample Output
11
HINT
Source
By Monster_Yi【分析】
杜教筛...第一次做...也不知道怎么回事
https://www.baidu.com/link?url=DrLxnCCPgy4onbGkvRUycEW8dKwWsR7J6Rclh8v1eMr9JwPg9zEZpBbIRYfQrn6c24_hNlYRJhErM3Ms7DEvZwjR1SS8GzP-lXWwVKgaLoK&wd=&eqid=9d6f2517000c3d1400000003592f703f
【代码】
相关文章推荐
- 【BZOJ4916】神犇和蒟蒻(杜教筛)
- [BZOJ4916]神犇和蒟蒻
- 【BZOJ4916】神犇和蒟蒻(杜教筛)
- bzoj 4916: 神犇和蒟蒻【欧拉函数+莫比乌斯函数+杜教筛】
- BZOJ 4916 神犇和蒟蒻
- [杜教筛] BZOJ 4916 神犇和蒟蒻
- BZOJ4916 神犇和蒟蒻 【欧拉函数 + 杜教筛】
- BZOJ 4916: 神犇和蒟蒻 杜教筛 数学
- bzoj 4916: 神犇和蒟蒻
- 【BZOJ4916】神犇和蒟蒻 杜教筛
- [bzoj4916] 神犇和蒟蒻 [杜教筛]
- [杜教筛 莫比乌斯反演][BZOJ]4916: 神犇和蒟蒻(我)
- [bzoj4916]神犇和蒟蒻
- BZOJ 4916 神犇和蒟蒻
- [bzoj4916] 神犇和蒟蒻
- bzoj4916 神犇和蒟蒻
- 【杜教筛】BZOJ4916[神犇(JZ)和蒟蒻(ZZK)]题解
- [bzoj4916]神犇和蒟蒻
- bzoj 4916: 神犇和蒟蒻 杜教筛
- BZOJ 4916 神犇和蒟蒻(杜教筛)