码迷,mamicode.com
首页 > 其他好文 > 详细

华为入职培训题——水仙花数

时间:2015-05-04 18:19:06      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

描述:

水仙花数又称阿姆斯特朗数。

水仙花数是指一个n 位数( n3 ),它的每个位上的数字的n 次幂之和等于它本身。

(例如:1^3 + 5^3 + 3^3 = 153)

求输入的数字是否为水仙花数

 

知识点:

工程环境请使用VS2005

 

题目来源: 软件训练营
练习阶段: 初级


这题不知道有没有好的方法,我的代码效率不高,就是按要求做下来,希望各位大年给说说高效的算法~


#include<iostream>
using namespace std;
// 功能:判断输入 nValue 是否为水仙花数
// 输入: nValue为正整数
// 输出:无
// 返回:如果输入为水仙花数,返回1,否则返回0
unsigned int IsDaffodilNum(unsigned int  nValue)
{
	unsigned int i=0,j,sum,tmp,tmp1;
	unsigned int n=nValue;
	//取得位数,位数最后用变量i表示
	while(n)
	{
		i++;
		n/=10;
	}
	if(i<3)return 0;//如果位数小于3则不是水仙花数
	//对各位数进行计算次方和
	n=nValue;
	sum=0;
	while(n)
	{
		tmp=n%10;
		tmp1=tmp;
		for(j=1;j<i;j++)
			tmp1*=tmp;
		sum+=tmp1;
		n/=10;
	}
//次方和与给定数字相等,则是水仙花数
	if(sum==nValue)return 1;
	return 0;
}

int main()
{
	if(IsDaffodilNum(153))cout<<"yes"<<endl;
	return 0;
}



华为入职培训题——水仙花数

标签:

原文地址:http://blog.csdn.net/wljwsj/article/details/45481931

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!