题目:设一个正整数既是平方数又是立方数时,称其为special数。
输入包含多组测试数据,第一行输入测试数据的组数,接着在后续每行输入n(n<= 1000000000)的时候,
请输出1到n中包含的所有special数的个数。
Example:
Inputs:
2
1
64
Outputs:
1
2
本来想的方法时间复杂度比较大,发现一位学长的这个方法,比较巧妙
#include<bits/stdc++.h>
using namespace std;
bool sqrt(int x){
bool flag = false;
for(int i=1;i*i<=x;i++){
if(i*i==x){
flag = true;
}
}
return flag;
}
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int cnt = 0;
for(int i=1;i*i*i<=n;i++){
if(sqrt(i*i*i)==true)
cnt++;
}
printf("%d\n",cnt);
}
return 0;
}