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

华为机试题——阿姆斯特朗数

时间:2015-05-05 10:43:06      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

描述:

如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数

(亦称为自恋性数),1除外,如407 = 43+03+73就是一个阿姆斯特朗数。

试编程求n(n  65536)以内的所有阿姆斯特朗数。

 

接口说明

原型:

    int CalcArmstrongNumber(int n);

输入参数:

    int n: n ≤ 65536

 

返回值:

        n以内的阿姆斯特朗数的数量

 

知识点:

工程环境请使用VS2005

 

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


题目很简单,关键是了解阿姆斯特朗数,代码放在这里存档~希望有高效的算法~


#include<iostream>
using namespace std;

 int IsArmstrongNum(int  nValue)
{
	int i=0,j,sum,tmp,tmp1;
	int n=nValue;
	if(nValue==1)return 0;
	//取得位数,位数最后用变量i表示
	while(n)
	{
		i++;
		n/=10;
	}

	//对各位数进行计算次方和
	n=nValue;
	sum=0;
	while(n)
	{
		tmp=n%10;
		tmp1=tmp;
		for(j=1;j<3;j++)
			tmp1*=tmp;
		sum+=tmp1;
		n/=10;
	}
//次方和与给定数字相等,则是
	if(sum==nValue)return 1;
	return 0;
}
/*
功能: 求n(n ≤ 65536)以内的所有阿姆斯特朗数
原型:
    int CalcArmstrongNumber(int n);

输入参数:
    int n: n ≤ 65536

返回值:
    n以内的阿姆斯特朗数的数量。
*/

int CalcArmstrongNumber(int n)
{
    /*在这里实现功能*/
	int count=0;
	int i;
	for(i=n;i>1;i--)
		if(IsArmstrongNum(i))count++;
    return count;
}
int main()
{
	cout<<CalcArmstrongNumber(400)<<endl;
	return 0;
}



华为机试题——阿姆斯特朗数

标签:

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

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