题目
求C君一次能看到多少人。
分析:
首先3个点是绝对看得到的(1,0),(0,1),(1,1)
然后从第三行开始为φ(n−1)\varphi(n-1)φ(n−1)把它们加起来*2+3便是答案。
代码
#include <cstdio>
using namespace std;
unsigned short n,phi[40001]; int ans;
int main(){
scanf("%d",&n);
if (n==1) return !putchar('0');
for (int i=2;i<=n;i++) phi[i]=i;
for (int i=2;i<=n;i++)
if (phi[i]==i)
for (int j=i;j<=n;j+=i) phi[j]=phi[j]/i*(i-1);
for (int i=2;i<n;i++) ans+=phi[i];
return !printf("%d",(ans<<1)+3);
}