杭电acm2031
http://acm.hdu.edu.cn/showproblem.php?pid=2031
典型的禁制转化,除k取余,然后颠倒输出
View Code
1 #include<stdio.h> 2 char ans[100000]; 3 void zhuanhua(int n,int r) 4 { 5 int i,j; 6 char a[100000]; 7 i=j=0; 8 while(n) 9 { 10 if(n%r>9) 11 a[i]=n%r-10+'A';//大于10的用16进制的表示 12 else 13 a[i]=n%r+'0'; 14 n/=r; 15 i++; 16 }//除k取余 17 while(i--) 18 ans[j++]=a[i]; 19 ans[j]='\0'; 20 } 21 int main() 22 { 23 int n,r,i; 24 while(scanf("%d%d",&n,&r)!=EOF) 25 { 26 if(n<0) 27 { 28 printf("-"); 29 n=-n;//负数先输出符号,然后取正 30 } 31 zhuanhua(n,r); 32 printf("%s\n",ans); 33 } 34 return 0; 35 }