题意:如果一个数,其实十进制各位数的和等于十六进制各位数的和且等于等于12进制各位数的和,那么他是一个sky数,否则不是。(写一个换算成任意进制数的函数即可)
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int get_sum(int n, int p){
// 换成p进制的和
int x = n;
int sum = 0;
while(x){
sum += x%p;
x = x/p;
}
return sum;
}
int main()
{
int n;
while(scanf("%d", &n) != EOF){
if(n == 0) break;
int x1 = get_sum(n, 10);
int x2 = get_sum(n, 12);
int x3 = get_sum(n, 16);
//cout << x1 << x2 << x3 << endl;
if(x1 == x2 && x2 == x3) printf("%d is a Sky Number.\n", n);
else printf("%d is not a Sky Number.\n", n);
}
return 0;
}