Description
大家都知道,计算机中是以二进制存储的!但是在现实生活中,我们遇到过各种各样的进制情况,我们接触得最多的就是十进制,不过,生活中还存在各种进制计数的情况。例如:一个星期七天是7进制、一年十二个月,是12进制等等。小明最近在学c语言,熟悉了c语言中的各种进制转换问题,所以就尝试着各种进制转换的程序,现在他想写一个程序,把一个无符号数n,转化成在b进制下的表示。例如:n为10,b为2,则转化后为1010。又如:n为10,b为16,则转化后为0XA.
Input
输入的第一行为一个正整数t ( t<=10000 ),表示一共有t组测试数据。每组两个整数,分别为n,b(0 <= n <= 1000000000,2<=b<=16)。n表示要转化的数,b表示b进制。
Output
输出n在b进制下的表示。(注意:如b为16输入时记得加上0X,字母都是以大写的形式
Sample Input
4 10 2 10 16 100 7 1000000000 16
Sample Output
1010 0XA 202 0X3B9ACA00
#include <iostream>
using namespace std;
int main()
{
int b,num[1000],k;
char s[21]={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K'};
int j,i=0;
long n;
cin>>k;
while(k--)
{ cin>>n>>b;
do
{
num[i]=n%b;
i++;
}
while((n/=b)!=0);
if(b==16)
cout<<"0X";
for(j=i-1;j>=0;j--)
cout<<s[num[j]];
cout<<endl;
}
return 0;
}
这种字符串问题处理什么的最麻烦了!!提交上去好多次都是wrong answer ,或者 Time exceed!!
这方面的操作要好好加强一下!
推荐 http://blog.csdn.net/smartboysboys 这同学贴上的题目。。不能更赞!