杭电ACM 2097:Sky数

来源:互联网 发布:lds激光测距 知乎 编辑:程序博客网 时间:2024/05/22 05:13

这里写图片描述
这一道题简单题,主要难点在于怎么得出各个进制数的每一位并且相加,最后做判断。因为在前面这样的体型做过很多了,几分钟就可以写出来。我的AC代码如下:

#include <iostream>using namespace std;int main(){    int input_num,dec_num,hex_num,twe_num;    int total_dec_num,total_hex_num,total_twe_num;    while(cin>>input_num&&input_num)    {        //判断十进制        dec_num=input_num;        total_dec_num=0;        while(dec_num>=1)        {            total_dec_num+=dec_num%10;            dec_num=dec_num/10;        }        //判断十六进制        hex_num=input_num;        total_hex_num=0;        while(hex_num>=1)        {            total_hex_num+=hex_num%16;            hex_num=hex_num/16;        }        //先判断十进制和十六进制和是否相同,如果不相同则直接可以进入下一次输入判断        if(total_dec_num!=total_hex_num)        {            cout<<input_num<<" is not a Sky Number."<<endl;            continue;        }        else        {            //判断十二进制            twe_num=input_num;            total_twe_num=0;            while(twe_num>=1)            {                total_twe_num+=twe_num%12;                twe_num=twe_num/12;            }            if(total_dec_num==total_twe_num)            {                cout<<input_num<<" is a Sky Number."<<endl;            }            else            {                cout<<input_num<<" is not a Sky Number."<<endl;            }        }    }    return 0;}

运行结果如下:
这里写图片描述

0 0