1 条题解
-
0
#include<bits/stdc++.h> #define LL __int128 using namespace std; const int N=1e7; int pr, p[N+10];LL mu[N+10]; bool v[N+10]; void init() { memset(v,0,sizeof(v)); pr=0;mu[0]=0;mu[1]=1; for(int i=2;i<=N;i++) { if(!v[i]) p[++pr]=i, mu[i]=-1; for(int j=1;j<=pr&&p[j]*i<=N;j++) { v[i*p[j]]=true; if(i%p[j]==0){mu[i*p[j]]=0;break;} mu[i*p[j]]=-mu[i]; } } for(int i=1;i<=N;i++) mu[i]+=mu[i-1]; } LL calc2(int a,int b) { int n=min(a,b); LL ans=0; for(int l=1,r;l<=n;l=r+1) { r=min(a/(a/l), b/(b/l)); ans+=(mu[r]-mu[l-1])*(a/l)*(b/l); } return ans; } LL calc3(int a,int b,int c) { int n=min({a,b,c}); LL ans=0; for(int l=1,r;l<=n;l=r+1) { r=min({a/(a/l), b/(b/l),c/(c/l)}); ans+=(mu[r]-mu[l-1])*(a/l)*(b/l)*(c/l); } return ans; } void qr(LL x) { if(x>9)qr(x/10); printf("%d",int(x%10)); } int main() { init(); int a,b,c; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { if(a==1 && b==1 && c==1) {printf("0\n");continue;} a--;b--;c--; qr(calc3(a,b,c)+calc2(a,b)+calc2(a,c)+calc2(b,c)+3); printf("\n"); } return 0; }
- 1
信息
- ID
- 508
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 45
- 已通过
- 24
- 上传者