fork download
  1. #include<stdio.h>
  2.  
  3. int gcd(int a,int b ) {
  4.  
  5. while(b!=0){
  6. int rem = a%b;
  7. a = b;
  8. b = rem;
  9. }
  10. return a;
  11. }
  12.  
  13. int main()
  14. {
  15. int t,n,q,i,r,l;
  16.  
  17. scanf("%d",&t);
  18. scanf("%d %d",&n,&q);
  19. int a[n];
  20. int prefix[n],suffix[n];
  21.  
  22. while(t--)
  23. {
  24. for(i=0;i<n;i++)
  25. {
  26. scanf("%d",&a[i]);
  27. }
  28. prefix[0] = a[0];
  29. suffix[n-1] = a[n-1];
  30.  
  31. for(i=1;i<n;i++)
  32. {
  33. prefix[i] = gcd(prefix[i-1],a[i]);
  34. }
  35.  
  36. for(i=n-2;i>=0;i--)
  37. {
  38. suffix[i] = gcd(suffix[i+1],a[i]);
  39. }
  40. while(q--)
  41. {
  42. scanf("%d",&l);
  43. scanf("%d",&r);
  44.  
  45. l = l-1;
  46. r = r-1;
  47.  
  48. if(l==0 && r==n-1)
  49. {
  50. printf("1\n");
  51. }
  52. else if(l==0)
  53. {
  54. printf("%d\n",suffix[r+1]);
  55. }
  56. else if(r==n-1)
  57. {
  58. printf("%d\n",prefix[l-1]);
  59. }
  60. else
  61. {
  62. printf("%d\n",gcd(prefix[l-1],suffix[r+1]));
  63. }
  64. }
  65. }
  66. return 0;
  67. }
Runtime error #stdin #stdout 0s 2052KB
stdin
Standard input is empty
stdout
Standard output is empty