zoukankan      html  css  js  c++  java
  • Visible Lattice Points

    题目链接

    题意:给个N*N的矩形点,求在原点看去能看到多少个点

    思路:除了(1,0),(0,1),(1,1)外其他点的xy都互质。所以求欧拉函数。fhi[i]从2加到n,再是两倍,再加3。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<queue>
    #include<cmath>
    using namespace std;
    const int max_n=100010;
    int v[max_n],prime[max_n],phi[max_n];
    void euler(int n)
    {
        memset(v,0,sizeof(v));
        int m=0;
        for(int i=2;i<=n;i++)
        {
            if(v[i]==0)
            {
                v[i]=i;
                prime[++m]=i;
                phi[i]=i-1;
            }
            for(int j=1;j<=m;j++)
            {
                if(prime[j]>v[i]||prime[j]>n/i)
                break;
                v[i*prime[j]]=prime[j];
                phi[i*prime[j]]=phi[i]*(i%prime[j]?prime[j]-1:prime[j]);
            }
        }
    }
    int main()
    {
        int n;
        euler(100000);
        int t;
        
        scanf("%d",&t);
        int x=0;
        while(t--){
            scanf("%d",&n);
            long long sum=0;
            for(int i=2;i<=n;i++)
            sum+=phi[i];
            sum=sum*2+3;
            printf("%d ",++x);
            printf("%d ",n);
            printf("%lld
    ",n==0?0ll:sum);
        }
     } 
  • 相关阅读:
    后台执行linux命令
    日志
    配置文件
    后台
    后台代码注释
    递归建立文件夹
    图片合成
    java.awt.Font
    java-日期取特定值
    linux乱码
  • 原文地址:https://www.cnblogs.com/2462478392Lee/p/11299887.html
Copyright © 2011-2022 走看看