24h購物| | PChome| 登入
2009-01-24 22:05:32| 人氣493| 回應0 | 上一篇 | 下一篇

ACM 389 Basically Speaking

推薦 0 收藏 0 轉貼0 訂閱站台

先換成10進位的數字,再利用陣列去跑進位的部分。

/************************************************************/

  1. #include<stdio.h>   
  2. #include<stdlib.h>   
  3. #include<string.h>   
  4. main()   
  5. {   
  6.  int a,b,c,n,m;   
  7.  char x[20];   
  8.  while(scanf("%s %d %d",x,&n,&m)==3)   
  9.   {   
  10.    /*n是現在的 m是要轉換的*/  
  11.    int temp=1,sum=0,y[50]={0};   
  12.    for(a=strlen(x)-1;a>=0;a--)   
  13.     {   
  14.      if(x[a]>='A')   
  15.      sum=sum+temp*(x[a]-55);   
  16.      else    
  17.      sum=sum+temp*(x[a]-48);   
  18.      temp=temp*n;   
  19.     }   
  20.    y[0]=sum;   
  21.    for(a=0;a<50;a++)   
  22.     {   
  23.      if(y[a]>=m)   
  24.       {   
  25.       y[a+1]=y[a+1]+y[a]/m;   
  26.       y[a]=y[a]%m;   
  27.       }   
  28.     }   
  29.     for(a=49;a>=0;a--)   
  30.      {   
  31.       if(y[a]!=0)   
  32.        {   
  33.        if(a>=7)   
  34.         {   
  35.         printf("  ERROR");   
  36.          break;   
  37.         }   
  38.        else  
  39.         {   
  40.          for(c=0;c<7-a;c++)   
  41.           printf(" ");     
  42.          for(b=a;b>=0;b--)   
  43.           {   
  44.           switch(y[b])      
  45.              {      
  46.              case 10:printf("A");break;      
  47.              case 11:printf("B");break;      
  48.              case 12:printf("C");break;      
  49.              case 13:printf("D");break;      
  50.              case 14:printf("E");break;      
  51.              case 15:printf("F");break;      
  52.              default:printf("%d",y[b]);      
  53.              }   
  54.            }   
  55.           break;   
  56.          }    
  57.        }   
  58.      }   
  59.      printf("\n");   
  60.   }   
  61.  return 0;   

台長: 來源不明
人氣(493) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 591 Box of Bricks
此分類上一篇:ACM 10473 Simple Base Conversion

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文