codeup-番号変換

1942:番号変換

制限時間:1秒メモリ制限:32メガバイトの
提出:2738解決:693
[ 送信 ] [ ステータス ] [ ウェブボード ]、[作成者:インポート]

説明

任意の二つの異なる非バイナリ変換負の整数(16進バイナリ)を見つけ、それが長い間に与えられた式の範囲内の整数であり得ます。
異なる16進数は、(0,1、...、9であり 、B、...、F) 、又は(0,1、...、9、A 、B、...、F)

入力

三つの整数、nは、Bを含む唯一のライン入力、。その後の進を表すnは整数であり、bはバイナリ整数Bに変換されることを望むものではN進整数を表します。A、Bは10進数、2 = <、B <= 16です。

出力

データの各セットのためのテストデータの複数のセットであってもよく、出力ラインを含み、ラインは、バイナリ整数bが変換されています。すべて大文字の出力シンボルは、すなわち、示される場合には(0,1、...、9、A、B、...、F)。

サンプル入力

4 123 10

サンプル出力

27

ヒント

文字列は、異なるストレージ16進を表します。

 

  1の#include <stdio.hの>
   2の#include < ストリング・H>
   3  
  4  int型のmain(){
   5      int型A、B。
  6      チャー S [ 40 ]。
  7      一方(scanf関数(" %D%S%D "、および、sは、&​​B)=!EOF){
   8          INT LEN = STRLEN(S)。
  9          // 将字符串转换成数值!!! 
10          のためにINTを iは= 0 ; I <LEN; I ++ ){
 11              であれば(S [I]> = ' 0 ' && S [I] <=' 9 ')S [I] = S [I] - ' 0 ' 12              であれば(S [I]> = ' ' && S [I] <= ' F ')S [I] = S [I] - ' ' + 10 13 であれば(S [I]> = ' A ' && S [I] <= ' F ')S [I] = S [I] - ' A ' + 10 14         }
 15 int型の和= 0、生成物= 1                                 INT I = len- 1 ; I> = 0 ; i-- ){
 17              合計=合計+(INT)S [I] * 製品。
18              製品=製品* 19          }
 20          INT NUM = 0 21          // 初始化!!! 
22          のmemset(S、0はsizeof (S))。
23          であれば(B == 10 ){
 24              のprintf(" %dの\ n " 、合計)。
25          }他に{
 26              // 変換の素晴らしいモード!
図27は             {
 28                  IF(SUMの%のB < 10 ){
 29                      S [NUM ++] = SUM%のB + ' 0 ' ;
 30                  } {
 31である                      S [NUM ++] = SUM%のB - 10 + ' A ' ;
 32                  }
 33であります                  SUM / = B;
 34である              } ながら(!SUM = 0 );
 35              のためにint型私はnum- = 1 ; I> = 0 ; i-- ){
 36                  のprintf(" %のC " 、S [I])。
37              }
 38              のprintf(" \ n " );
39          }
 40      }
 41      リターン 0 42  }
 43  
44  / * 
45  //自己写的 
 46  空隙outPrintf(int型N){
 47      IF(N <10){
 48          のprintf( "%d個"、N)
49      }他{
 50         スイッチ(N){
 51              ケース10:
 52                  のprintf( "A")。
53                  ブレーク;
54              ケース11:
 55                  のprintf( "B")。
56                  ブレーク;
57              ケース12:
 58                  のprintf( "C")。
59                  ブレーク;
60              ケース13:
 61                  のprintf( "D")。
62                  ブレーク;
63              ケース14:
 64                  のprintf( "E")。
65                  ブレーク;
66             ケース15:
 67                  のprintf( "F");
68                  ブレーク;
69          }
 70      }
 71  }
 72  
73  INT changeNum(チャーC){
 74      のint NUM。
75      IF(C == '0'){
 76          NUM = 0。
77      }そうIF(C == '1'){
 78          NUM = 1。
79      }そうIF(C == '2'){
 80          NUM = 2。
81      }そうIF(C == '3'){
 82          NUM = 3。
83      }そうIF(C == '4'){
 84          NUM = 4。
85     }そうなら(C == '5'){
 86          NUM = 5。
87      }そうIF(C == '6'){
 88          NUM = 6。
89      }そうIF(C == '7'){
 90          NUM = 7。
91      }そうIF(C == '8'){
 92          NUM = 8。
93      }そうIF(C == '9'){
 94          NUM = 9。
95      }そうIF(C == 'A' || C == 'A'){
 96          NUM = 10。
97      }そうIF(C == 'B' || C == 'B'){
 98          NUM = 11。
99      }そうIF(C == 'C' || C == 'C'){
 100          NUM = 12。
 102          NUM = 13。
103      }そうIF(C == 'E' || C == 'E'){
 104          NUM = 14。
105      }そうでなければ{
 106          NUM = 15。
107      }
 108      戻りNUM。
109  }
 110  
111  ボイドgetNum(CHAR S []、INT LEN、INT ANS []){
 112      のint NUM。
113      のための(I = 0 INT、J = LEN-1; I <LEN; I ++、J - ){
 114の         ANS [I] = changeNum(S [J])。
115      }
 116  }
 117  
118  メインINT(){
 119      int型A、B。
120     文字S [40]; // nは必ずしも0-9との間に本の数は、同様に、Aと表示されることがあります!これは、列記憶して必要である 
 121      ながら(!scanfの( "%D%S%D"、&A、S、&B)= EOF){
 122          、INTのANS [40] NUM;
 123          INT LEN = STRLEN(S)、
 124          (ANS lenをS)getNum;
 125          のunsigned long long int型SUM = 0、商品= 1;
 126          {(;私は<LEN I ++ INT I = 0)のための
 127              SUM = SUM + ANS [I] *製品;
 128              * A =商品の商品;
 129          }
 130          NUM = 0;
 131である         {行う
 132              ; ANS [NUM ++] = SUMの%のB
 133              SUM / = Bと、
 134         }一方(和= 0!)。
135          のための(INT I = NUM-1; I> = 0; I - ){
 136              outPrintf(ANS [I])。
137          }
 138          のprintf( "\ n");
139      }
 140      戻り0;
141  }
 142  * /

 

おすすめ

転載: www.cnblogs.com/heyour/p/12149879.html