HDU 1002 A + B Problem II (高精度加法)

来源:互联网 发布:c语言公式的编程案例 编辑:程序博客网 时间:2024/05/16 01:19

思路:

改良了之前自己写的一个高精度的模板。。。也不能说是改良吧,应该是改错。。。
这题不会出现 000 + 000000 = 0 这种情况。
然后就是恶心的格式。。。pe了好久。。。

AC代码:

#include <iostream>#include <cstdio>#include <ctime>#include <cstdlib>#include <string.h>#define N 10000using namespace std;// 大数a,b相加 ,结果放在c上void BigSum(char* a,char *b,char *c){    char s[N];    int i = strlen(a);    int j = strlen(b);    if(i<j){        int temp = i;        i = j;        j = temp;        char * tt = a;        a = b;        b = tt;    }    int jinwei = 0;    int k;    for(k = 1;k <= i+1;k++){        int m;        if(j >= k)            m = a[i-k] + b[j-k] - 48 * 2 + jinwei;        else if( i >= k)            m = a[i-k] - 48 + jinwei;        else{            m = jinwei;            if(m == 0)break;        }        if(m >= 10){            jinwei = 1;            m-=10;        }        else{            jinwei = 0;        }        char c = m + 48;        s[k-1] = c;    }    k--;    k--;    for(int l = 0;l <= k;l++){        c[l] = s[k-l];    }    c[k+1] = '\0';}char mm[5000];char n1[5000];char n2[5000];int main(){    int cas = 0;    int t;    cin>>t;    while(t--){        cas++;        scanf("%s%s",n1,n2);        BigSum(n1,n2,mm);        printf("Case %d:\n",cas);        printf("%s + %s = ",n1,n2);        for(int i = 0;mm[i];i++){            printf("%c",mm[i]);        }        if(t != 0)            printf("\n\n");        else            printf("\n");    }    return 0;}
1 0
原创粉丝点击