1 条题解

  • 0
    @ 2024-3-27 16:16:16
    #include <iostream>
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    int vis[N+19];
    int prime[N+19];
    int phi[N+10];
    int cnt;
    void init(int n)        
    {
        phi[1]=1;
        vis[0]=vis[1]=1;
        cnt=0;
        for(int i=2; i<=n; i++)
        {
            if(vis[i]==0)
            {
                prime[cnt++]=i;
                phi[i]=i-1;
            }
            for(int j=0; prime[j]*i<=n; j++)
            {
                vis[prime[j]*i]=1;
                if(i%prime[j]==0)
                {
                    phi[i*prime[j]]=phi[i]*prime[j];
                    break;
                }
                phi[i*prime[j]]=phi[i]*(prime[j]-1);
            }
        }
        return ;
    }
    int main()
    {
        int c;
        scanf("%d",&c);
        init(2000);
        int Case=0;
        while(c--)
        {   Case++;
            int n;
            scanf("%d",&n);
            int sum=0;
            for(int i=1; i<=n; i++)
            {
                sum+=phi[i];
            }
            printf("%d %d %d\n",Case,n,sum*2+1);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    112
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    10
    已通过
    9
    上传者