Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
1094 | 邓小龙 | 进制转换2 | C++ | Wrong Answer | 0 MS | 280 KB | 2428 | 2023-07-08 00:04:37 |
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> typedef long long int64; //输入一个字符,返回数值 int getCharValue(char c) { if(c >= '0' && c <= '9') { return (int)(c - '0'); } else if(c >= 'a' && c <= 'z') { return (int)(c - 'a') + 10; } else { return -1; } } //输入一个n进制数的一位,得到其字符串 char getCharByNum(int b) { if(b >= 0 && b <= 9) { return ('0' + b); } else if(b >= 10 && b <= 36) { return ('a' + b - 10); } else { printf("FATAL!!!\n"); return '0'; } } //一个进制为jz的数字字符串转换成10进制数值 int64 getIntNum(const char* str,int jz) { int64 sum = 0; int len = strlen(str); int bitlen = len; for(int i = 0;i < len;i++) { bitlen--; sum += getCharValue(str[i]) * pow(jz,bitlen); } return sum; } int main() { int m,n; int flag = false; char input[50] = {0}; while(scanf("%d %d",&m,&n) != EOF) { if(m < 2 || m > 36 || n < 2 || n > 36) continue; scanf("%s",&input); //如有负号,提取出来单独处理 char* inputStr = input; if(input[0] == '-') { inputStr++; flag = true; } //输入的m进制数字转成0进制数值 int64 inputNum = getIntNum(inputStr,m); //将十进制数值转换成n进制的字符串 char array[64] = {0}; for(int i = 0;;i++) { int a = inputNum / n; int b = inputNum % n; inputNum = a; if(a <= 0) { array[i] = getCharByNum(b); if(flag) { array[i + 1] = '-'; array[i + 2] = '\0'; } else { array[i + 1] = '\0'; } break; } array[i] = getCharByNum(b); } for(int i = strlen(array) - 1;i >= 0;i--) { printf("%c",array[i]); } printf("\n"); } return 0; }
------Input------
2 10 11111111 3 16 1212120 4 8 1230123 5 11 43210 6 12 342150 7 13 1234560 8 14 12345670 9 15 123456780 10 2 11 11 17 12345A 12 18 23456AB 13 19 12345678ABC 14 20 23456ABCD 15 21 4567ABDE 16 22 12345DEF 17 23 2314EFG 18 24 12345ABH 19 25 456CDEI 20 26 13567ABDJ 21 27 32145CBADK 22 28 923456781CDBAEFGHIKJL 23 29 54321ABM 24 30 234567CDFGN 25 31 ABCDEO 26 32 ABCDP 27 33 BGDFAQ 28 34 34AFGRDE 29 35 678SAKB 30 36 TEGH12 31 3 345GHJU 32 4 VASDBC 33 5 FGC4W12H 34 6 ABCX34DFR 35 7 6H8Y34GRW 36 9 XYZZA7
------Answer-----
255 555 15433 2224 14956 57b64 514320 4bb27b6 1011 25b54 3affd5 9a00b5ehf 2bbaaf81 8ea972e 2f5hah9 842ef6 3e4i72n kfgi45 3iacap1p 8j6a3da55 219m58bk1b9n8cqg5d47 10io49cq 6q1or35ten 3hiqj1 4hjnj 48g3sk rjb8vng 20s7fok bukt5w 21011220002022001011 332223203111230 41310012401323330 103130240520530445 3036240551316664 10374545654665
------Your output-----
255 555 15433 2224 14956 57b64 514320 4bb27b6 1011 25b4a 3aff55 1 2bba6db9 8ea506b 2f5h2ij 8425l5 3e4i0ch kfagn5 3iac5h95 2bfbi7bn FATAL!!! 0 10io424r 1gj4frsb 0 FATAL!!! 0 FATAL!!! 0 revvxnp 20rpp9h FATAL!!! 0 21011212002122201002 FATAL!!! 0 FATAL!!! 0 FATAL!!! 0 6 FATAL!!! 0