其实这是一道很简单的进制转化后求各个数字的位数之和的例子,在我们看来就是用一个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; }