Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cmath>
- using namespace std;
- long long v[8192],m;
- const int npr=18;
- int pr[npr]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61};
- long long putere(long long x, int n)
- { long long p=1;
- for (int i=0;i<n;i++) p*=x;
- if (p<0) return m+1;
- return p;
- }
- int main()
- { int i,j,n,n1; long long k,p,q,q1,dif;
- ifstream fi("abx.in"); ofstream fo("abx.out");
- fi>>n>>m;
- for (i=1;i<=n;i++) fi>>v[i];
- for (i=1;i<=n;i++)
- { if (v[i]<3) {fo<<1<<"\n"; continue;}
- dif=5000000000; n1=0;
- for (j=0;j<npr;j++)
- { k=(long long)pow((long double)v[i],1.0/pr[j]); if (k<2) {n1++; if(n1>1)break;}
- q=putere(k,pr[j]);
- if (q>v[i]) {q1=q; q=putere(k-1,pr[j]);}
- else { q1=putere(k+1,pr[j]);
- if (q1<=v[i]) {q=q1; q1=putere(k+2,pr[j]);}
- }
- if (v[i]-q<=dif) {p=q; dif=v[i]-q;}
- if (q1<=m && q1-v[i]<dif) {p=q1; dif=q1-v[i];}
- }
- fo<<p<<"\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement