大整数加法回顾

来源:互联网 发布:阿里云主机登陆 编辑:程序博客网 时间:2024/05/19 13:15



/* hdu 1002 AC */#include <stdio.h>#include <stdlib.h>#include <string.h>char res[1001], num1[1001], num2[1001];void bigIntAdd(char * res, char * num1, char * num2) {    char * tmp;    int tmp2;    char sum, jinwei;    int len1, len2, i, j;    len1 = strlen(num1);    len2 = strlen(num2);    if (len1 < len2) {        tmp = num1;        num1 = num2;        num2 = tmp;        tmp2 = len1;        len1 = len2;        len2 = tmp2;    }    res[len1+1] = '\0';   //!!!    i = len1 - 1;    j = len2 - 1;    jinwei = 0;    while (i >= 0) {        if (j >= 0) {            sum = num1[i]-'0' + num2[j]-'0' + jinwei;            if (sum > 9) {                res[i+1] = sum - 10 + '0';                jinwei = 1;            } else {                res[i+1] = sum + '0';                jinwei = 0;            }            i--;            j--;        } else {            sum = num1[i]-'0' + jinwei;            if (sum > 9) {                res[i+1] = sum - 10 + '0';                jinwei = 1;            } else {                res[i+1] = sum + '0';                jinwei = 0;            }            i--;        }    }    if (jinwei)        res[0] = '1';    else        res[0] = '0';}void printBigInt(char * str) {    if (res[0] != '0')        printf("%s", str);    else        printf("%s", str + 1);}void main() {    int T, kas;    scanf("%d", &T);    for (kas = 1; kas <= T; kas++) {        scanf("%s%s", num1, num2);        bigIntAdd(res, num1, num2);        printf("Case %d:\n", kas);        printf("%s + %s = ", num1, num2);        printBigInt(res);        putchar('\n');        if (kas != T)            putchar('\n');    }}


0 0
原创粉丝点击