fork download
  1. #include <iostream>
  2. using namespace std;
  3. int GCD(int x,int y)
  4. {
  5. int gcd=1,max=1;
  6. if(x==1 || y==1) return 1;
  7. for(int i=2;i<x;i++)
  8. {
  9. if(x%i ==0 && y%i==0)
  10. gcd=i;
  11. if(gcd>max) max=gcd;
  12. }
  13. return max;
  14. }
  15. int maxPoints(int *arr,int p,int a,int b)
  16. {
  17. int count=0;
  18. for(int i=0;i<a-1;i++)
  19. {
  20. for(int j=0;j<b;j++)
  21. {
  22. for(int k=0;k<b;k++)
  23. {
  24. int x=*((arr+i*b) + j);
  25. int y=*((arr+(i+1)*b) + k);
  26. if(GCD(x,y)!=1)
  27. count+=*((arr+i*b) + j);
  28. }
  29. }
  30. }
  31. return count;
  32. }
  33. int main() {
  34. int t;
  35. cin>>t;
  36. while(t--)
  37. {
  38. int a,b;
  39. cin>> a >> b;
  40. int **arr = new int*[b];
  41. for(int i = 0; i < b; ++i) {
  42. arr[i] = new int[a];
  43. }
  44. for(int i=0;i<a;i++)
  45. for(int j=0;j<b;j++){
  46. cin>>arr[i][j];
  47. int y =maxPoints((int*)arr,0,a,b);
  48. cout<<y<<endl;
  49. }
  50. }
  51. return 0;
  52. }
Success #stdin #stdout 0s 15240KB
stdin
1
3 3
2 3 5 1 4 8 7 6 9
stdout
100386
100386
100386
100386
100386
100386
100386
100386
100386