Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <bits/stdc++.h>
- #include <fstream>
- using namespace std;
- # define ll long long
- //#define int long long
- #define forn(i,n) for(int i = 0; i < (int)n; ++i)
- const int mod = 998244353;
- int mul (int x, int y){
- return (x * y)%mod;
- }
- int binpow(int x, int y)
- {
- int z = 1;
- while(y)
- {
- if(y & 1) z = mul(z, x);
- x = mul(x, x);
- y >>= 1;
- }
- return z;
- }
- const int N = 200001;
- int ff[N];
- void beg(){
- ff[0] = 1;
- for(int i = 1; i<N; ++i){
- ff[i] = mul(ff[i - 1], i);
- }
- }
- int obr(int x)
- {
- return binpow(x, mod - 2);
- }
- int divide(int x, int y)
- {
- return mul(x, obr(y));
- }
- int c(int n, int k){
- return divide(ff[n], mul(ff[k], ff[n-k]));
- }
- int bsearch(int cur, vector<int>&a, int start, int end){
- while(start +1 < end){
- int mid = (start + end)/2;
- if(a[mid]+a[cur]>0){
- end = mid;
- } else {
- start = mid;
- }
- }
- return end;
- }
- int nod(int a, int b){
- if(b == 0){
- return a;
- }
- return nod(b, a%b);
- }
- int nok(int a, int b){
- return a*b/nod(a,b);
- }
- bool prost(int a){
- for(int i = 2;i<=sqrt(a);++i){
- if(a%i == 0){
- return 1;
- }
- }
- return 0;
- }
- const int MAXR = 1000005;
- ll cubic_root(ll x)
- {
- ll l = 0, r = MAXR;
- while (l != r) {
- ll m = (l + r + 1) / 2;
- if (m * m * m > x)
- r = m - 1;
- else
- l = m;
- }
- return l;
- }
- bool prov(string s){
- for(int i=0;i<s.size()/2;++i){
- if(s[i]!=s[s.size()-1-i]){
- return 0;
- }
- }
- return 1;
- }
- vector<int> prefix_function (string s) {
- int n = (int) s.length();
- vector<int> pi (n);
- for (int i=1; i<n; ++i) {
- int j = pi[i-1];
- while (j > 0 && s[i] != s[j])
- j = pi[j-1];
- if (s[i] == s[j]) ++j;
- pi[i] = j;
- }
- return pi;
- }
- signed main(){
- cin.tie(0);
- ios_base::sync_with_stdio(0);
- // std::string name = "/home/rasull/FFCF/equatation.in";
- // fstream input(name, input.in);
- //ifstream in("/home/rasull/FFCF/tree.in");
- //ofstream out("/home/rasull/FFCF/tree.out");
- int t;
- cin >> t;
- forn(_,t){
- int n;
- cin >>n;
- vector<int>a(n);
- forn(i,n){
- cin >> a[i];
- }
- int prost[11]={2,3,5,7,11,13,17,19,23,29,31};
- vector<int>ans(n,-1);
- int col = 0;
- for(int i=0;i<11;++i){
- bool dob=0;
- forn(j,n){
- if(a[j]%prost[i]==0 && ans[j]==-1){
- dob=1;
- ans[j]=col+1;
- }
- }
- if(dob){
- ++col;
- }
- }
- cout<<col<<endl;
- forn(i,n){
- cout<<ans[i]<<" ";
- }
- cout<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement