题意:求出这样的四位数的个数,满足分别以十进制、十二进制、十六进制表示时,数字相加之和相等。
思路:刚开始我想到的是用itoa函数,后面写出来了,但是没通过,编译错误,才知道itoa在POJ中是非标准的函数,不能使用,所以重新写了这个…………还有一个最快的程序就是虽然itoa非标准的函数,但是我可以算出来后,直接把答案输出就得了,我也是提交了这个我才记得可以直接输出答案都得的!!!
#include <iostream>
using namespace std;
int cmp(int n,int a)
{
int sum=0;
while(n)
{
if(a==10)
{sum+=n%10;n/=10;}
else if(a==12)
{sum+=n%12;n/=12;}
else {sum+=n%16;n/=16;}
}
return sum;
}
int main()
{
int i;
for(i=2992;i<10000;i++)
if(cmp(i,10)==cmp(i,12)&&cmp(i,10)==cmp(i,16)) cout<<i<<endl;
return 0;
}