欢迎来到kaffeel的博客

点滴积累,快乐分享-kaffeel.org
  首页  :: 新随笔  :: 订阅 订阅  :: 管理

编程练习一:编程实现查找所有的Aaron数

Posted on 2012-07-25 17:28  kaffeel  阅读(303)  评论(0编辑  收藏  举报

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 ;
}