题目
BUPT 2017 计算机 ProblemA
设一个正整数既是平方数又是立方数时,称之为Special数。输入包含多组测试用例,第一行输入测试数据的组数,接着在后续每行输入n的时候,请输出1到n中包含的所有Special数的个数。
示例
输入
2
1
64
输出
1
2
题解
输入n,
-
平方数判断
对于开方,C/C++有相应的函数,只需判断开方后的数是否是整数(int)sqrt(n)==sqrt(n)
即可 -
立方数判断
利用for循环找是否有 k 3 = = n k^3==n k3==n,找到相应k则证明n是立方数,否则不是
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
int num,cnt=0;
cin>>num;
for(int j=1;j<=num;j++)
{
//判断平方数
if((int)sqrt(j)==sqrt(j))
{
//判断立方数
for(int k=1;k*k*k<=j;k++)
{
if(k*k*k==j)
cnt++;
}
}
}
cout<<cnt<<endl;
}
}
}