思路:

在任意一个边长为N的这个图中,除了(1,1),(1,0),(0,1)这三个点以外,其余所有的点(x,y),都是互质的,即gcd(x,y)=1,又因为上面的图是对称结构,所以,只需要求1<=x
最后答案的值就是3+2*(f(2)+f(3)+...+f(n))
这里用的是埃氏筛法求欧拉函数。
代码:
- #include
- #include
- #include
- #include
- #include
- #include
- using namespace std;
- typedef pair<int,int>PII;
- const int N=1003;
- int n;
- int phi[N];
- void get(int n)
- {
- 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);
- }
- int sum(int n)
- {
- int sun=0;
- for(int i=2;i<=n;i++)
- sun+=phi[i];
- return sun;
- }
- int main()
- {
- scanf("%d",&n);
- get(1000);
- int a;
- for(int i=1;i<=n;i++)
- {
- cin>>a;
-