题目问题很简单的。
判断立方数
for(int j=1;j<sqrt(sum);j++)
{
if(j*j*j==sum)
{
flag=1;
break;
}
}
判断平方数
a=sqrt(sum);
if(a*a==sum)
有个题目是这样的:
JM新研究出了一种完美数字,他是这样定义的:如果一个数字xx的数位之和sumsum是一个平方数或者立方数,且xx的数位中没有出现数字2,42,4,则称xx为完美数字。
前1010个完美数字为:1,8,9,10,13,17,18,31,35,361,8,9,10,13,17,18,31,35,36
请你帮JM统计一下,[1,141516][1,141516]中有多少个这样的完美数字。
听着就很简单!!但脑子一热,想到要用字符数组高精度算,觉得很难了!!!第二天脑袋一亮就想到了!实在简单的一批!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int c=0;
for(int i=1;i<=141516;i++)
{
int sum=0;
int a=0;
int n=i;
while(n)
{
a=n%10;
n=n/10;
sum=sum+a;
if(a==2||a==4)
{
sum=0;break;
}
}
if(sum)
{
int a,b;
a=sqrt(sum);
int flag=0;
for(int j=1;j<sqrt(sum);j++)
{
if(j*j*j==sum)
{
flag=1;
break;
}
}
if(a*a==sum||flag)
c++;
}
}
cout<<c;
return 0;
}