用这样一份AC代码:
#include<iostream>
#include<cmath>
using namespace std;
int s,n,a[1002011],x,k;
int main()
{
cin>>s>>n;
for(int i=sqrt(s+0.5);i<=1001;i++) {
for(int j=1;j*i*i<1002011;j++)
if(j*i*i>=s) a[j*i*i]=j*i*i;
}
for(int i=1002001;i;i--) {
if(a[i]==i) { k=i; continue; }
a[i]=k;
}
while(n--)
{
cin>>x;
if(a[x]==x) cout<<"lucky"<<endl;
else cout<<a[x]<<endl;
}
return 0;
}
输入样例1,然后我们得到了如下输出
2
lucky
lucky
lucky
但是这份代码通过了所有测试点。
求加强数据