Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #include <fstream>
  4. using namespace std;
  5. # define ll long long
  6. //#define int long long
  7. #define forn(i,n) for(int i = 0; i < (int)n; ++i)
  8. const int mod = 998244353;
  9. int mul (int x, int y){
  10. return (x * y)%mod;
  11. }
  12. int binpow(int x, int y)
  13. {
  14. int z = 1;
  15. while(y)
  16. {
  17. if(y & 1) z = mul(z, x);
  18. x = mul(x, x);
  19. y >>= 1;
  20. }
  21. return z;
  22. }
  23. const int N = 200001;
  24. int ff[N];
  25. void beg(){
  26. ff[0] = 1;
  27. for(int i = 1; i<N; ++i){
  28. ff[i] = mul(ff[i - 1], i);
  29. }
  30. }
  31. int obr(int x)
  32. {
  33. return binpow(x, mod - 2);
  34. }
  35.  
  36. int divide(int x, int y)
  37. {
  38. return mul(x, obr(y));
  39. }
  40. int c(int n, int k){
  41. return divide(ff[n], mul(ff[k], ff[n-k]));
  42. }
  43.  
  44. int bsearch(int cur, vector<int>&a, int start, int end){
  45. while(start +1 < end){
  46. int mid = (start + end)/2;
  47. if(a[mid]+a[cur]>0){
  48. end = mid;
  49. } else {
  50. start = mid;
  51. }
  52. }
  53. return end;
  54.  
  55. }
  56. int nod(int a, int b){
  57. if(b == 0){
  58. return a;
  59. }
  60. return nod(b, a%b);
  61. }
  62. int nok(int a, int b){
  63. return a*b/nod(a,b);
  64. }
  65. bool prost(int a){
  66. for(int i = 2;i<=sqrt(a);++i){
  67. if(a%i == 0){
  68. return 1;
  69. }
  70. }
  71. return 0;
  72. }
  73.  
  74. const int MAXR = 1000005;
  75.  
  76. ll cubic_root(ll x)
  77. {
  78. ll l = 0, r = MAXR;
  79. while (l != r) {
  80. ll m = (l + r + 1) / 2;
  81. if (m * m * m > x)
  82. r = m - 1;
  83. else
  84. l = m;
  85. }
  86. return l;
  87. }
  88. bool prov(string s){
  89. for(int i=0;i<s.size()/2;++i){
  90. if(s[i]!=s[s.size()-1-i]){
  91. return 0;
  92. }
  93. }
  94. return 1;
  95. }
  96.  
  97. vector<int> prefix_function (string s) {
  98. int n = (int) s.length();
  99. vector<int> pi (n);
  100. for (int i=1; i<n; ++i) {
  101. int j = pi[i-1];
  102. while (j > 0 && s[i] != s[j])
  103. j = pi[j-1];
  104. if (s[i] == s[j]) ++j;
  105. pi[i] = j;
  106. }
  107. return pi;
  108. }
  109.  
  110. signed main(){
  111. cin.tie(0);
  112. ios_base::sync_with_stdio(0);
  113. // std::string name = "/home/rasull/FFCF/equatation.in";
  114. // fstream input(name, input.in);
  115. //ifstream in("/home/rasull/FFCF/tree.in");
  116. //ofstream out("/home/rasull/FFCF/tree.out");
  117. int t;
  118. cin >> t;
  119. forn(_,t){
  120. int n;
  121. cin >>n;
  122. vector<int>a(n);
  123. forn(i,n){
  124. cin >> a[i];
  125. }
  126. int prost[11]={2,3,5,7,11,13,17,19,23,29,31};
  127. vector<int>ans(n,-1);
  128. int col = 0;
  129. for(int i=0;i<11;++i){
  130. bool dob=0;
  131. forn(j,n){
  132. if(a[j]%prost[i]==0 && ans[j]==-1){
  133. dob=1;
  134. ans[j]=col+1;
  135. }
  136. }
  137. if(dob){
  138. ++col;
  139. }
  140. }
  141. cout<<col<<endl;
  142. forn(i,n){
  143. cout<<ans[i]<<" ";
  144. }
  145. cout<<endl;
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement