基本没有思维难度,只是NOJ系统答案好像有问题,只输出2991-3000的符合数据,猜测原因是忘记在新的循环中重新初始化各位数之和,导致只能输出一组连续的符合要求的数据,一旦有不符合要求的,就会停止输出了。想要AC的话就直接把循环范围设置在2991-3000,然后提交这个代码即可。
#include <iostream>
using namespace std;
int sumdec(int a)
{
int sum=0;
while(1){
sum=sum+a%10;
a=a/10;
if(a==0){
break;
}
}
return sum;
}
int sumhex(int a)
{
int sum=0;
while(1){
sum=sum+a%16;
a=a/16;
if(a==0){
break;
}
}
return sum;
}
int sumduo(int a)
{
int sum=0;
while(1){
sum=sum+a%12;
a=a/12;
if(a==0){
break;
}
}
return sum;
}
int main()
{
int i;
for(i=2991;i<=9999;i++){
if(sumduo(i)==sumhex(i)&&sumduo(i)==sumdec(i))cout<<i<<'\n';
}
return 0;
}