CF-div2-630-B - Composite Coloring
Posted fisherss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF-div2-630-B - Composite Coloring相关的知识,希望对你有一定的参考价值。
思路
1.一个数字能够分解成有限个素数的乘积 —— 唯一分解定理
2.平方小于1000的只有11个质因数
3.所以只要把最小质因子相同的归为一类即可,根据(2)最后分类数一定小于等于11,满足题目要求
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1100;
int t,n;
int a[maxn];
int prime[11] = {2,3,5,7,11,13,17,19,23,29,31};
int vis[11];
map<int,int > mp;
//1.一个数字能够分解成若干个素数的乘积——唯一分解定理
//2.小于1000的数 质因子一定是小于等于11的
//3.所以只要把最小质因子相同的归为一类即可,根据(2)最后分类数一定小于11
void solve(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=0;i<11;i++) vis[i] = 0;
int cnt = 0;
for(int i=1;i<=n;i++){
for(int j=0;j<11;j++){
if(a[i] % prime[j] == 0){
if(vis[j]==0) vis[j] = ++cnt;
mp[i] = vis[j];
break;
}
}
}
cout<<cnt<<endl;
for(int i=1;i<=n;i++){
cout<<mp[i]<<" ";
}
cout<<endl;
}
int main(){
cin>>t;
while(t--){
solve();
}
return 0;
}
以上是关于CF-div2-630-B - Composite Coloring的主要内容,如果未能解决你的问题,请参考以下文章
CF-Div2-832 D. Yet Another Problem(bitmask&结论)
CF-Div2-832 D. Yet Another Problem(bitmask&结论)
CF-div3-611-F. DIY Garland 优先队列 构造树
CF-div2-620-D. Shortest and Longest LIS 贪心,双指针