题目大意
找出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; }