fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. unsigned int gcd(unsigned int u, unsigned int v)
  6. {
  7. // simple cases (termination)
  8. if (u == v)
  9. return u;
  10.  
  11. if (u == 0)
  12. return v;
  13.  
  14. if (v == 0)
  15. return u;
  16.  
  17. // look for factors of 2
  18. if (~u & 1) // u is even
  19. {
  20. if (v & 1) // v is odd
  21. return gcd(u >> 1, v);
  22. else // both u and v are even
  23. return gcd(u >> 1, v >> 1) << 1;
  24. }
  25.  
  26. if (~v & 1) // u is odd, v is even
  27. return gcd(u, v >> 1);
  28.  
  29. // reduce larger argument
  30. if (u > v)
  31. return gcd((u - v) >> 1, v);
  32.  
  33. return gcd((v - u) >> 1, u);
  34. }
  35.  
  36. int main() {
  37. int t, n, arr[50], cmmn, yes;
  38. cin>>t;
  39. while(t--) {
  40. cin>>n;
  41. for(int i=0; i<n; i++) cin>>arr[i];
  42. cmmn=1005; yes=1;
  43. for(int i=1; i<n; i++) if(gcd(arr[0], arr[i])<cmmn) cmmn=gcd(arr[0], arr[i]);
  44. for(int i=0; i<n; i++) if(cmmn!=arr[i]) yes=0;
  45. if(yes) for(int i=0; i<n; i++) cout<<1<<" ";
  46. else if(cmmn==1) for(int i=0; i<n; i++) cout<<arr[i]<<" ";
  47. else for(int i=0; i<n; i++) cout<<(arr[i]/cmmn)<<" ";
  48. cout<<endl;
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0s 3344KB
stdin
3
2 4 4
3 2 3 4
4 3 15 9 6
stdout
1 1 
2 3 4 
1 5 3 2