题目大意
找出1~n之间的平方数和立方数。
分析
先看数据范围1e9, 不能直接枚举判断,那就从1枚举到sqrt(n) 然后的处其平方和立,扔到set里面去重。立方数极端情况会到1e15, 开long long.
代码
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int t;
set<int> num;
signed main()
{
cin>>t;
while(t--)
{
num.clear();
int n;
cin>>n;
int p=sqrt(n);
for(int i=1;i<=p+1;i++)
{
if(i*i<=n) num.insert(i*i);
if(i*i*i<=n) num.insert(i*i*i);
}
cout<<num.size()<<endl;
}
return 0;
}