码迷,mamicode.com
首页 > Windows程序 > 详细

AcWing 201. 可见的点

时间:2021-02-01 12:35:02      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:osi   while   return   cin   org   class   its   情况下   rgb   

在一个平面直角坐标系的第一象限内,如果一个点(x,y)与原点(0,0)的连线中没有通过其他任何点,则称该点在原点处是可见的。

编写一个程序,计算给0<x,y<=n定整数N的情况下,满足的可见点(x,y)的数量(可见点不包括原点)。

 

#include<bits/stdc++.h>
#define N 10000
#define ll long long
using namespace std;
int pr[N],phi[N],v[N];
ll sum[N];
void ol(int x)
{
    phi[1]=pr[1]=1;
    int cut=0;
    for(int i=2;i<=x;i++)
    {
        if(v[i]==0)pr[++cut]=i,phi[i]=i-1;
        for(int j=1;pr[j]<=x/i&&j<=cut;j++)
        {
            v[i*pr[j]]=pr[j];
            if(i%pr[j]==0)
            {
                phi[i*pr[j]]=pr[j]*phi[i];
                break;
            }
            phi[i*pr[j]]=phi[i]*(pr[j]-1);
        }
    }
    for(int i=1;i<=1000;i++)sum[i]=sum[i-1]+phi[i];
}
int main()
{
    int t;
    cin>>t;
    int k=0;
    ol(1000);
    while(++k<=t)
    {
        int n;cin>>n;
        printf("%d %d %lld\n",k,n,2*sum[n]+1);
    }
    return 0;
}

 

AcWing 201. 可见的点

标签:osi   while   return   cin   org   class   its   情况下   rgb   

原文地址:https://www.cnblogs.com/1314cyd/p/14351577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!