ACM 數論 莫比烏斯函式
阿新 • • 發佈:2019-01-30
滴,集訓第十九天打卡。
因為新開了group,所以之前的紫書訓練也沒人做了..
現在是圖論+數論比較多...
感覺上學期資料結構沒學好...圖論菜的不行=-=..
51Nod 1240
莫比烏斯函式
詳解後續放..在另一臺電腦上...
#include <stdio.h>
#include <string.h>
int su[50010],sh[50010];
int get(int n)
{
int s=0,i,j;
for(i=0;sh[i]*sh[i]<=n;i++)
{
if(n%(sh[i]*sh[i])==0)
return 0;
if(n%sh[i]==0)
{
s++;
n/=sh[i];
}
}
if(n>0)
s++;
if(s&1)return -1;
else return 1;
}
int main()
{
int n,i,j,k=0;
memset(su,0,sizeof(su));
for(i=2;i<50010;i++)
{
if(!su[i])
{
sh[k++]=i;
for(j=i*2;j<50010;j+=i)
su[j]=1;
}
}
scanf("%d",&n);
printf("%d\n",get(n));
}