jzoj3927【NOIP2014模拟11.6】可见点数(欧拉函数)

xiaoxiao2021-02-28  102

3927. 【NOIP2014模拟11.6】可见点数

Description

ZPS经过长期的努力争取,终于成为了0901班的领操员,他要带领0901班参加广播操比赛。现在0901班的队伍可以看作是一个n*n的点阵,每个人都站在格点上。现在作为领操员的ZPS站(0,0)点,他想知道如果0901班的队伍站齐了,他能看到多少个人的脸(假设每个人的身高相同,体积相同)。

Input

一个正整数n。

Output

ZPS能看到多少个人的脸(当然他是看不到自己的脸的)。

分析:这题很显然两个坐标互质就可以看得到,用欧拉函数求就行了。

代码

#include <cstdio> #define maxn 100000 using namespace std; int f[maxn]; int main() { int n; scanf("%d",&n); for (int i=1;i<=n;i++) f[i]=i; for (int i=2;i<=n;i++) if (i%2==0) f[i]/=2; else if (f[i]==i) { for (int j=i;j<=n;j+=i) f[j]=f[j]/i*(i-1); } long long ans=0; for (int i=1;i<n;i++) ans+=f[i]; if (n==1) printf("0"); else printf("%lld",ans*2+1); }
转载请注明原文地址: https://www.6miu.com/read-43909.html

最新回复(0)