Advertisement
a53

abx

a53
Mar 14th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #include <fstream>
  2. #include <cmath>
  3. using namespace std;
  4. long long v[8192],m;
  5. const int npr=18;
  6. int pr[npr]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61};
  7. long long putere(long long x, int n)
  8. { long long p=1;
  9. for (int i=0;i<n;i++) p*=x;
  10. if (p<0) return m+1;
  11. return p;
  12. }
  13. int main()
  14. { int i,j,n,n1; long long k,p,q,q1,dif;
  15. ifstream fi("abx.in"); ofstream fo("abx.out");
  16. fi>>n>>m;
  17. for (i=1;i<=n;i++) fi>>v[i];
  18. for (i=1;i<=n;i++)
  19. { if (v[i]<3) {fo<<1<<"\n"; continue;}
  20. dif=5000000000; n1=0;
  21. for (j=0;j<npr;j++)
  22. { k=(long long)pow((long double)v[i],1.0/pr[j]); if (k<2) {n1++; if(n1>1)break;}
  23. q=putere(k,pr[j]);
  24. if (q>v[i]) {q1=q; q=putere(k-1,pr[j]);}
  25. else { q1=putere(k+1,pr[j]);
  26. if (q1<=v[i]) {q=q1; q1=putere(k+2,pr[j]);}
  27. }
  28. if (v[i]-q<=dif) {p=q; dif=v[i]-q;}
  29. if (q1<=m && q1-v[i]<dif) {p=q1; dif=q1-v[i];}
  30. }
  31. fo<<p<<"\n";
  32. }
  33. return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement