版权声明:未经过同意不得转载 https://blog.csdn.net/qq_42500298/article/details/88096314
我们可以把这些都看成简分数,只需要看1/d中d是否存在就行了,就比如说d=3是,不管分子是多少,把他分成三等份有1/3就有2/3,因此标记一下每个ai的所有因子就行了。注意这里判断d是否存在的时候要写成for(int j=i;j<maxn;j+=i)
#include<bits/stdc++.h>
using namespace std;
const int maxn=200005;
int ans,a,n,g[maxn],vis[maxn];
int main()
{
cin>>n;
for(int i=1;i<=n+1;++i)
{
cin>>a;
vis[a]=1;
}
for(int i=2;i<maxn;i++)
{
g[i]+=i-1;
int flag=0;
for(int j=i;j<maxn;j+=i)
{
if(vis[j])
flag=1;
if(i!=j)
g[j]-=g[i];
}
if(flag)
ans+=g[i];
}
cout<<ans<<endl;
return 0;
}