平方数与立方数
时间限制:1秒 内存限制:128M
题目描述
小可很喜欢完全平方数或完全立方数。比如4=是完全平方数,8=
是完全立方数。
现在给出一个数字n,请问1∼n中有多少小可喜欢的数字。
输入描述
第一行一个正整数t(1≤t≤20),代表有t组数据。
对于每组数据,有一个正整数n(1≤n≤)。
输出描述
对于每组数据,输出1∼n中有多少小可喜欢的数字
样例输入
6
10
1
25
1000000000
999999999
500000000
样例输出
4
1
6
32591
32590
23125
提示
拿第一组数据为例,1∼10中1,4,8,9都是小可喜欢的数字。其中1,4,9是完全平方数,8是完全立方数
思路:
分析题目,我们可以知道完全平方数和完全立方数的定义作者这里懒得说了
定义set,表示去重
t次循环,每次循环x次,x*x<=n,再循环y次,y*y*y<=n,每次把x*x和y*y*y放到set中,只为去重,最后输出set长度,清空set
代码如下:
#include <bits/stdc++.h>
using namespace std;
set <int> a;
int main ()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
a.clear ();
int cnt = 0;
for(int i = 1; i * i * i <= n; ++ i){
a.insert(i * i * i);
}
for(int i = 1;i * i <= n; ++ i){
a.insert(i * i);
}
cout << a.size() << '\n';
}
return 0;
}