本地能跑但交上去CE的代码 为啥啊
  • 板块学术版
  • 楼主A2_Zenith
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/8/23 09:19
  • 上次更新2023/11/3 01:50:36
查看原帖
本地能跑但交上去CE的代码 为啥啊
906856
A2_Zenith楼主2023/8/23 09:19

记录

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdlib>
#include<iomanip>
#include<map>
#define int long long
#define double long double
#define lc(p) p<<1
#define rc(p) p<<1
#define pii pair<int,int>
using namespace std;
int phi(int n){
    if(n==1)return 1;
    int ans=n;
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            ans=ans*(i-1)/i;
            while(n%i==0)n/=i;
        }
    }
    if(n>1)ans=ans*(n-1)/n;
    return ans;
}
int a[10000007];
bool isp[10000007];
int p[10000007]={0,1};
int sum[10000007];
int cnt=0;
void sieve(int n){
    for(int i=1;i<=n;i++){
        isp[i]=1;
    }
    for(int i=2;i<=n;i++){
        if(isp[i]){
            a[cnt]=i;
            p[i]=i-1;
            cnt++;
        }
        for(int j=0;j<cnt&&a[j]*i<=n;j++){
            isp[a[j]*i]=0;
            if(i%a[j]==0){
                p[i*a[j]]=p[i]*a[j];
                break;
            }
            p[i*a[j]]=p[i]*p[a[j]];
        }
    }
}
signed main(){ios::sync_with_stdio(0);
    int n;
    cin>>n;
    sieve(n);
    for(int i=1;i<=n;i++){
        sum[i]=sum[i-1]+p[i];
    }
    int ans=0;
    for(int i=0;i<cnt;i++){
        ans=ans+2*sum[n/a[i]]-1;
    }
    cout<<ans<<endl;
    return 0;
}
//9 15
//1 2 0 1
//2 3 0 1
//3 1 0 1
//4 5 0 1
//5 6 0 1
//6 4 0 1
//7 8 0 1
//8 9 0 1
//9 7 0 1
//3 6 0 1
//2 8 0 1
//5 7 0 1
//3 7 0 1
//2 5 0 1
//6 8 0 1

//5 10
//1 2 0 1
//1 3 0 1
//1 4 0 1
//1 5 0 1
//2 3 0 1
//2 4 0 1
//2 5 0 1
//3 4 0 1
//3 5 0 1
//4 5 0 1

//7 12
//1 2 0 1
//3 4 0 1
//5 6 0 1
//2 7 0 1
//6 7 0 1
//1 3 0 1
//3 5 0 1
//2 4 0 1
//4 6 0 1
//2 5 0 1
//4 5 0 1
//3 6 0 1



2023/8/23 09:19
加载中...