这道题中的十六进制数和十二进制数不需要规范地算出来,只要把其中的每位数字求出然后相加即可。
#include<iostream>
using namespace std;
int sum_d(int a)
{
int sum=a/1000+(a/100)%10+(a/10)%10+a%10;
return sum;
}
int sum_h(int a)
{
int sum=0;
while(a!=0)
{
sum+=a%16;
a/=16;
}
return sum;
}
int sum_t(int a)
{
int sum=0;
while(a!=0)
{
sum+=a%12;
a/=12;
}
return sum;
}
int main()
{
int a;
while(cin>>a&&a)
{
if(sum_d(a)==sum_h(a)&&sum_h(a)==sum_t(a))
cout<<a<<" is a Sky Number."<<endl;
else
cout<<a<<" is not a Sky Number."<<endl;
}
return 0;
}