您的位置:首页 > 其它

HOJ:2031 进制转换

2013-07-18 01:19 393 查看

进制转换

TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)
TotalSubmission(s):18495AcceptedSubmission(s):10386


[align=left]ProblemDescription[/align]
输入一个十进制数N,将它转换成R进制数输出。

[align=left]Input[/align]
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16,R<>10)。

[align=left]Output[/align]
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

[align=left]SampleInput[/align]

72
2312
-43

[align=left]SampleOutput[/align]

111
1B
-11

解题思路:
以第一个例子72
7%2=1
7/2=3
3%2=1
3/2=1
1%2=1
1/2=0//结束
结果是111


我的代码:


#include<stdio.h>
charA[100];
intmain()
{
intnum,r,i,t,j,mark;
while(~scanf("%d%d",&num,&r)){
i=0;
mark=0;
if(num<0){
mark=1;
num=-num;
}
while(num>0){
t=num%r;
if(t>9)A[i]=t-10+'A';
elseA[i]=t+'0';
++i;
num/=r;
}
if(mark==1)printf("-");

for(j=i-1;j>=0;j--){
printf("%c",A[j]);
}
printf("\n");
}
return0;
}


大神级别代码:

#include<stdio.h>
#include<string.h>

voidttor(intn,intr)
{
if(n)
{
ttor(n/r,r);
printf("%c",n%r>9?n%r-10+'A':n%r+'0');
}
}

intmain(void)
{
intn;
intr;

while(scanf("%d%d",&n,&r)!=EOF)
{
if(n>0)
ttor(n,r);
elseif(!n)//表示n==0
putchar('0');
else
{
putchar('-');
ttor(-n,r);
}
putchar('\n');
}

return0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: