http://poj.org/problem?id=1396
挺坑的一道题,调试了一天跪在了格式上,要注意的情况很多,样例太没有代表性了,很容易理解错格式。。
要注意的情况:(1)(加法、减法) 水平线 '----' 的数量为它相邻两侧字符串的最大长度。
(2)(乘法) 当第二个数为一位数时,’----'的数量同(1); 否则输出两次’----‘,最上面的’-----‘数量同(1),下面的’----‘数量为最后结果的长度。
(3)计算减法的时候,结果要去掉前导0。
(4)注意右对齐,每组数据后有一个空行。
样例:
(1) 999 1000 100 (2) 123 1240 (3) 8888
+11 -1 -98 *4 *20 -8880
---- --- --- --- --- -----
1010 999 2 492 0 8
2480
-----
24800
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <string.h> 5 const int N=100010; 6 using namespace std; 7 char s1[N]= {'0'},s2[N]= {'0'}; 8 char s11[N],s22[N],s33[N]; 9 char str[N]; 10 char s[550][1010]; 11 char sd[550][1010]; 12 int m = 0,len = 0; 13 void add(char *st1,char *st2,int len)//大数加法 14 { 15 int j; 16 for (j = strlen(st1); j < len; j++) 17 st1[j] = '0'; 18 st1[j] = '