POJ 2196进制转换

来源:互联网 发布:linux驱动常问面试题 编辑:程序博客网 时间:2024/06/05 22:45

题意:求出这样的四位数的个数,满足分别以十进制、十二进制、十六进制表示时,数字相加之和相等。

思路:刚开始我想到的是用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;}