Преобразование codeup- номер

1942: преобразование номера

Лимит времени: 1 сек Лимит памяти: 32 MB
Добавить: 2738 Решено: 693
[ Добавить ] [ Статус ] [ Web Board ] [Создатель: Импортированные]

Описание

Найти любой два различных недвоичного преобразование отрицательных целого числа (двоичный гекс до 16), оно может быть целым числом в диапазоне от заданного выражения в длине.
Различное шестнадцатеричное обозначение (0,1, ..., 9, A , B, ..., F) , или (0,1, ..., 9, А , В, ..., F) , ,

вход

Только один линейный вход, состоящий из трех целых чисел а, п, б. а представляет собой последующую ичный п представляет собой целое число, б представляет собой шестнадцатеричное число п желая быть преобразованы в двоичное целое число б. а, б представляет собой десятичное целое число, 2 = <а, Ь <= 16.

Выход

Может быть несколько наборов тестовых данных для каждого набора данных, вывод содержит строку, строка имеет двоичное число б преобразуется. Когда выходные символы для всех заглавных букв представлены, а именно (0,1, ..., 9, A, B, ..., F).

Пример ввода

4 123 10

Пример вывода

27

ПОДСКАЗКА

Строка представляет собой различные хранения и шестнадцатеричный.

 

  1 #include <stdio.h>
   2 #include < строка .h>
   3  
  4  INT основных () {
   5      INT A, B;
  6      символ s [ 40 ];
  7 ,      а (зсапЕ ( " % d% s% d " , & A, S, и б) =! EOF) {
   8          INT Len = StrLen (ы);
  9          // 将字符串转换成数值!!! 
10          для ( Int I = 0 ; я <длина; я ++ ) {
 11 ,              если (s [I]> = ' 0 ' && s [I] <=' 9 ' ) с [I] = s [I] - ' 0 ' ;
12 ,              если (s [I]> = ' ' && s [I] <= ' е ' ) с [I] = s [I] - ' ' + 10 ;
13 , если (s [I]> = ' ' && s [I] <= ' Р ' ) с [I] = s [I] - ' А ' + 10 ;
14         }
 15 INT сумма = 0 , продукт = 1 ;
                                для ( INT I = len- 1 ; я> = 0 ; i-- ) {
 17              сумма = сумма + ( INT ) с [я] * продукт;
18              Продукт = Продукт * а;
19          }
 20          INT Num = 0 ;
21          // 初始化!!! 
22          MemSet (с, 0 , SizeOf (ы));
23 ,          если (б == 10 ) {
 24              Е ( " % d \ п " , сумма);
25          }еще {
 26              // замечательный способ преобразования! ! ! 
27              сделать {
 28                  ЕСЛИ (СУММЫ% B < 10 ) {
 29                      S [NUM ++] = СУММЫ% B + ' 0 ' ;
 30                  } еще {
 31                      S [NUM ++] = СУММЫ% В - 10 + ' ' ;
 32                 }
 33                  СУММА / = в;
 34              } это время (SUM =! 0 );
 35 для (              INT I = Num- 1 ; я> = 0 ; i-- ) {
 36                  Е ( " % С " , с [I]);
37              }
 38              Е ( " \ п " );
39          }
 40      }
 41      возврата  0 ;
42  }
 43  
44  / * 
45  //自己写的 
 46  аннулируются outPrintf (Int N) {
 47 ,      если (п <10) {
 48          Е ( "% d", п);
49      } еще {
 50         переключатель (п) {
 51              случая 10:
 52                  Х ( "А");
53                  перерыв;
54              Случай 11:
 55                  Е ( "В");
56                  перерыв;
57              Случай 12:
 58                  Е ( "С");
59                  перерыв;
60              Случай 13:
 61                  Е ( "D");
62                  перерыв;
63              Случай 14:
 64                  Х ( "Е");
65                  перерыв;
66             Случай 15:
 67                  Х ( "F");
68                  перерыв;
69          }
 70      }
 71  }
 72  
73  INT changeNum (символ с) {
 74      INT Num;
75 ,      если (с == '0') {
 76          Num = 0;
77      } иначе , если (с == '1') {
 78          Num = 1;
79      } иначе , если (с == '2') {
 80          Num = 2;
81      } иначе , если (с == '3') {
 82          Num = 3;
83      } иначе , если (с == '4') {
 84          Num = 4;
85     } иначе , если (с == '5') {
 86          Num = 5;
87      } иначе , если (с == '6') {
 88          Num = 6;
89      } иначе , если (с == '7') {
 90          Num = 7;
91      } иначе , если (с == '8') {
 92          Num = 8;
93      } иначе , если (с == '9') {
 94          Num = 9;
95      } иначе , если (с == 'а' || с == 'А') {
 96          Num = 10;
97      } иначе , если (с == 'Ь' || с == 'В') {
 98          Num = 11;
99      } иначе , если (с == 'с' || с == 'С') {
 100          Num = 12;
 102          Num = 13;
103      } иначе , если (с == 'е' || с == 'Е') {
 104          Num = 14;
105      } еще {
 106          Num = 15;
107      }
 108      возврата Num;
109  }
 110  
111  недействительными GetNum (символ s [], Int Len, Int ANS []) {
 112      INT Num;
113      для (INT I = 0, J = LEN-1; я <длина; я ++, J -) {
 114          ANS [I] = changeNum (с [J]);
115      }
 116  }
 117  
118  INT Основной () {
 119      INT A, B;
120     символ s [40]; // п не обязательно книга число между 0-9, может появиться, А и тому подобное! Это необходимо с хранения строки 
 121      это время (! Scanf ( "% D% S% D", & A, S & B) = в EOF) {
 122          INT ВНС [40], NUM;
 123          INT Len = StrLen (S);
 124          GetNum (S, Len, АНС);
 125          без знака Long Long INT СУММА = 0, Продукт = 1;.
 126          для (INT I = 0; I <длина; I ++) {
 127              СУММА = СУММ + ANS [I] * Продукт;
 128              * А = Изделие;
 129          }
 130.          NUM = 0;
 131          сделать {
 132              ВНС [NUM ++] = SUM% B;
 133              SUM / = B;
 134         } в то время как (сумма = 0!);
135          для (INT I = Num-1; я> = 0; I -) {
 136              outPrintf (ВНС [I]);
137          }
 138          Е ( "\ п");
139      }
 140      возврата 0;
141  }
 142  * /

 

рекомендация

отwww.cnblogs.com/heyour/p/12149879.html
рекомендация