1623:Sherlock and His Girlfriend(原题链接)
【分析】
这个题目初看我还以为题出错了,因为”一件珠宝的价格是另一件的质因子时,两件珠宝的颜色不同“,那意味着只要把数分两类就好:一类是质数,另一类是合数,各取一种颜色就搞定。有这么简单?但也想不出其他理解啊。报着试一试的心态,搞个筛选法选质数,居然过了,就这样吧,当一水题做了。
【AC代码】
//1623:Sherlock and His Girlfriend #include<cstdio> int const N=1e5+5; int s[N],p[N],n,cnt; void sprime() { for(int i=2;i<=n+1;i++) { if(!p[i])p[i]=i,s[++cnt]=i; for(int j=1;j<=cnt&&p[j]<=p[i]&&i<=(n+1)/s[j];j++) p[i*s[j]]=s[j]; } } int main(){ scanf("%d",&n); sprime(); if(n<3)printf("1 "); else printf("2 "); for(int i=1;i<=n;i++) if(p[i+1]==i+1)printf("1 "); else printf("2 "); return 0; }