ABC400E题解
不难发现,当每个质因数的指数为偶数时,这个数一定是一个平方数。
因此
现在思考怎么预处理。我们可以先记录
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1000005];
vector<ll> v; //将所有 400 数存到这里
int main()
{
for(int i = 2;i <= 1000000;i++)
{
if(a[i] == 0)
{
for(int j = i;j <= 1000000;j+=i)
{
a[j]++;
}
}
}
for(ll i = 2;i <= 1000000;i++)
{
if(a[i] == 2)
{
v.push_back(i*i);
}
}
int T;
scanf("%d", &T);
while(T--)
{
ll n;
scanf("%lld", &n);
printf("%lld\n", *prev(upper_bound(v.begin(), v.end(), n)));
}
return 0;
}