HLG 1624 ikki的卡片(20进制大数)
链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1624 描述: ikki有一沓标有大写英文字母的卡片,但是奇怪的是里面只有标从’A’-‘T’的卡片,ikki用这20种卡片设计了一个 小游戏:用’A’-‘T’分别表示数字 0 – 19,ikki把这些卡片表示的字母看成是20进制数,并用卡片拼成了两个数 字,现在ikki想让你用卡片表示出这两个数字相加之后的结果(卡片数量不限)。例如:拼成两个20进制数 分别是AAAADH,BCE?可以这样得到结果: a = 0 * 20^5+0* 20^4+ 0* 20^3+ 0 *20^2 + 3*20 + 7 = 67b = 1*20^2 + 2*20 + 4 = 444 a + b = 511 = BFL
多组测试数据。 每组测试数据输入两个只包含大写字母’A’-‘T’的字符串,表示两个20进制数,字符串长度均小于200。 对于每组测试数据输出一个用卡片表示的两个20进制数的和,每组输出占一行。Input: AAA C AAADH BCE Output: C BFL 好久都没有敲大数加法的代码了,生疏了超多,做这道题的时候错误真不是一般的多,而且检查的难度不是一般的高,建议广大计算机小童鞋,这种大数的代码没事敲多几次,这样在临时要的时候不至于拿着那种烂模板照着敲,要不然到时真不知道哪里出错了,改又不知道怎么改,这才是最让人头疼的、、、 测试数据了N次,,终于过了,,一开始是T B的时候测不到,然后以为对了,没想到还是错了, 这里再提示几组测试数据吧,AAAA ?AA --> A ? ?TT B --> BAA ? T B --> BA 看一下我写的猥琐代码吧,别吐口水哈各位靓仔靓女,别弄脏自己的电脑: #include <iostream> <cstdio> <cstring> <cstdlib> #define MAXN 256 #define RST(N)memset, 0 sizeof)) using namespace std; char str1[MAXN], str2 ans]; int a b d topvoid ADD([],136)">int b[]) { int cnt = forint i=; i<MAXN++) int temp = d[i]+a]+b]; //d存储最后的结果,各位大神肯定看得懂; d] = temp%20; if(temp >= ) d+1]++; //进位,这个函数修改的最多,真是有点浪费青春; } } int main() while(~scanf("%s %s" str1)) { RST(ans), RST(a(b(d); int L1 = strlen(str1 L2 (str2int k1 k2 =L1->=--) a[k1++] = int)str1- 'A'; //换成数字存储; =L2--) b[k2)str2; ADD); int flag ; //标记输出; =MAXN--) (flag) { printf"%c" char)(d]+)); continue; }else ]) )); flag (flag == ) puts"A"); //0+0的情况,也就是全是A相加的情况; puts""); //换行 return }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |