判断一个数是否为平方数或者立方数

题目问题很简单的。

判断立方数
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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值