杭电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 }
原文地址:https://www.cnblogs.com/huzhenbo113/p/2989851.html