2 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=40000; LL f[N+10], phi[N+10]; int pr, prime[N]; bool v[N+10]; int main() { phi[1]=1;pr=0; memset(v, 0, sizeof(v)); for(int i=2;i<=N;i++) { if(!v[i])phi[i]=i-1;prime[++pr]=i; for(int j=1;j<=pr && prime[j]*i<=N;j++) { v[i*prime[j]]=1; if(i%prime[j]==0) {phi[i*prime[j]]=phi[i]*prime[j];break;} else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } f[1]=phi[1];for(int i=2;i<=N;i++)f[i]=f[i-1]+phi[i]; int n;scanf("%d", &n); printf("%lld\n", f[n-1]*2+1); return 0; } -
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=40000; LL f[N+10],phi[N+10]; int pr,prime[N]; bool v[N+10]; int main() { phi[1]=1;pr=0; memset(v,0,sizeof(v)); for(int i=2;i<=N;i++) { if(!v[i])phi[i]=i-1,prime[++pr]=i; for(int j=1;j<=pr && prime[j]*i<=N;j++) { v[i*prime[j]]=1; if(i%prime[j]==0) {phi[i*prime[j]]=phi[i]*prime[j];break;} else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } f[1]=phi[1];for(int i=2;i<=N;i++)f[i]=f[i-1]+phi[i]; int n;scanf("%d",&n); printf("%lld\n",f[n-1]*2+1); return 0; }
- 1
信息
- ID
- 3855
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 15
- 已通过
- 8
- 上传者