杭电oj P2097 sky数
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n)
{
int d = n, sum1 = 0, sum2 = 0, sum3 = 0;
while(d)
{
sum1 += d % 10;
d /= 10;
}
int h = n;
while(h)
{
sum2 += h % 16;
h /= 16;
}
int m = n;
while(m)
{
sum3 += m % 12;
m /= 12;
}
if(sum1 == sum2 && sum1 == sum3 && sum2 == sum3)
cout << n << " is a Sky Number." << endl;
else
cout << n << " is not a Sky Number." << endl;//
cin >> n;
}
return 0;
}
本题思路:不用憨憨的将十进制转换成十六进制和十二进制,直接将十进制的数求余十六或十二,并将其结果累加即可,最后在进行判断。(其实一个函数就能解决问题,不用写那么多)