15、Problem F求Sky数
简要题意:
Sky发现了一个有趣的四位数2992,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,十二进制数表示1894,其四位数字之和均为22。这个数被称为Sky数。判断十进制的四位数是不是Sky数。
解题思路:
先将输入的数转换为所需进制,运用循环分别求出他们四位数字之和,判断所求的和是否均相等
解题细节:
先将输入的数字,赋值给三个变量,以确保转换进制时初始数不变
源码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int N,n,m,q;
int a,b,c;
int h,t,p;
while(cin>>n)
{
N=n,m=n,q=n;
p=0,h=0,t=0;
if(n==0)break;
else
{
while(n)
{
a=n%10;
h+=a;
n/=10;
}
while(m)
{
b=m%16;
t+=b;
m/=16;
}
while(q)
{
c=q%12;
p+=c;
q/=12;
}
if(h==t&&t==p)
cout<<N<<" is a Sky Number."<<endl;
else
cout<<N<<" is not a Sky Number."<<endl;
}
}
return 0;
}