其实这是一道很简单的进制转化后求各个数字的位数之和的例子,在我们看来就是用一个while( n > 0 )的式子就好,不管是多少进制,只要这样依次模拟短线除法
的运算,然后一步一步的切就OK了。但是有一点十分重要的东西要记住,那就是不管怎么样,一定要不断的重新赋值n,否则的话,会产生链带效应,造成没必要的WA、、、
# include<cstdio>
# include<iostream>
using namespace std;
int main(void)
{
int n;
while ( (cin>>n)&&n )
{
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
int t = n;
while( t>0 )
{
sum1+=t%10;
t = t/10;
}
t = n;
while ( t>0 )
{
sum2+=t%12;
t = t/12;
}
t = n;
while ( t>0 )
{
sum3+=t%16;
t = t/16;
}
if ( sum1==sum2&&sum2==sum3 )
cout<<n<<" is a Sky Number."<<endl;
else
cout<<n<<" is not a Sky Number."<<endl;
}
return 0;
}