zoj 1334 Basically Speaking(进制转换)

来源:互联网 发布:淘宝化妆品开直通车 编辑:程序博客网 时间:2024/06/06 09:00

如果你知道FFFFFFF的十进制数是268435455,并且int的范围是2147483647的话,此题可以直接水过。我初始看到此题还是懵了下怕转换的中间值十进制会超过范围...多虑了。

学弟问的,代码基本上没变

#include<stdio.h>#include<string.h>int main(){char s[150],t[8];int i,a,b,su,j,d,l,r,w;while(scanf("%s%d%d",s,&a,&b)!=EOF){d=1;l=0;su=0;w=1;for(i=strlen(s)-1,j=1;i>=0;i--) {     if(s[i]<='9'&&s[i]>='0') r=s[i]-'0';  else if(s[i]>='A'&&s[i]<='F')  r=s[i]-'A'+10;  su+=r*j; j=j*a;}i=0;while(su){j=su%b;if(j<=9&&j>=0)j+='0';else if(j>9&&j<=16)j=j-10+'A';t[i++]=j;su/=b;}if(i>7) {printf("  ERROR\n");   continue;}for(j=0;j<7-i;j++)printf(" ");for(j=i-1;j>=0;j--)printf("%c",t[j]);printf("\n");}return 0;}