题目大意:
给定数n,表示有n个物品,每个物品i的价值为i+1
现在要染色,要求是:当a物品价值是b物品价值的质因数时,a,b颜色不同
求一种颜色总数不同的染色方案
这个。。。所有质数都可以染成同一个颜色,同样所有合数也可以都染成同一个颜色,然后答案就出来了,除了1以外的整数要么质数要么合数啊。。。
然而还是要特判n==1和n==2的
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define debug(x) cerr<<#x<<"="<<x<<endl;
int n;
bool prim(int x) {
if(x==2||x==3) return true;
bool flg = true;
for(int i=2; i*i<=x; i++)
if(!(x%i)){
flg = false;
break;
}
return flg;
}
int main() {
cin >> n;
if(n==1){
cout << '1' << endl << '1' <<endl;
return 0;
}
if(n==2) {
cout << '1' << endl << "1 " << '1' <<endl;
return 0;
}
cout << '2' << endl;
for(int i=2; i<=n+1; i++) {
if(prim(i)) cout << "1 ";
else cout << "2 ";
}
cout << endl;
}

本文探讨了给定数量物品的染色方案问题,当一个物品的价值是另一个物品价值的质因数时,这两个物品必须染成不同颜色。文章提供了一种简单的解决方案,并通过代码实现了解决方案。
602

被折叠的 条评论
为什么被折叠?



