Advertisement
a53

divquery

a53
Mar 4th, 2020
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream fin("divquery.in");
  4. ofstream fout("divquery.out");
  5. int cmmdc(int a,int b)
  6. {
  7. int r;
  8. while(b)
  9. {
  10. r=a%b;
  11. a=b;
  12. b=r;
  13. }
  14. return a;
  15. }
  16.  
  17. int q,n,i,j,x,y,dif,l;
  18. int qr[18][100001];
  19. int lg[100001];
  20.  
  21. int main()
  22. {
  23. fin>>n>>q;
  24. for(i=2;i<=n;i++)lg[i]=1+lg[i/2];
  25. for(i=1;i<=n;i++)fin>>qr[0][i];
  26. for(i=1;(1<<i)<=n;i++)
  27. for(j=1;j<=n-(1<<i)+1;j++)
  28. qr[i][j]=cmmdc(qr[i-1][j],qr[i-1][j+(1<<(i-1))]);
  29. while(q--)
  30. {
  31. fin>>x>>y;
  32. dif=y-x+1;
  33. l=lg[dif];
  34. dif=dif-(1<<l);
  35. fout<<cmmdc(qr[l][x],qr[l][x+dif])<<'\n';
  36. }
  37. return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement