Aaron从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Aaron非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Aaron数。
不限语言 请找出所有的Aaron数。
什么样的数十Aaron数呢? 下面的实现是针对Aaron数为取其十进制各位数字之和、十二进制各位数字之和及十六进制各位数字之和均为22的数叫Aaron数。
VS工程实现:
#include <stdio.h>
#include <stdlib.h>
/*
* 函数名:get_digt_sum
* 功 能: 获取给定十进制数num的base进制数各位数字之和
* 参 数:int base 数制
* int num 十进制数字
* 返回值:各位数字之和
*/
int get_digt_sum(int base, int num)
{
int sum = 0;
while(0 != num)
{
sum += num%base;
num = num / base;
}
return sum;
}
/*
* 函数名:isAaronNumber
* 功 能:判断一个给定的十进制数是否是Aaron数
* 参 数:int num 需要判断的十进制数
* 返回值:true 如果num是Aaron数
* false 如果num不是Aaron数
*/
bool isAaronNumber(int num)
{
int sum=0;
if((num < 1000) || (num > 9999))
{
return false;
}else{
/*Aaron 数的条件*/
if((22 == get_digt_sum(10,num))&& (22 == get_digt_sum(16,num))&& 22 == get_digt_sum(12,num))
{
return true;
}
}
return false;
}
void main( void )
{
int number = 0;
bool arronNumber=false;
//在查找范围内进行遍历。
for(number = 1000; number <10000; number++)
{
arronNumber = isAaronNumber(number);
if(arronNumber)
{
printf("Find a Aaron Number: %d \n",number);
}
}
system("pause");
return ;
}