hdu 1002 A + B Problem II(大数相加)

来源:互联网 发布:枪手步态 知乎 编辑:程序博客网 时间:2024/06/05 07:36
#include <iostream>#include <cstring>using namespace std;#define mem(a) memset(a,0,sizeof(a))char num1[1002];char num2[1002];char result[1003];void convert(char* str, int len){    --len;    char temp;    for(int i = 0; i <= len; ++i)    {        temp = str[i];        str[i] = str[len];        str[len] = temp;        --len;    }}void addnum(){    int len1 = strlen(num1);    int len2 = strlen(num2);    int temp = 0;    int i;    for(i = 0; i < len1 && i < len2; ++i)    {        result[i] = ((num1[i]-'0')+(num2[i]-'0')+temp)%10+'0';        temp = ((num1[i]-'0')+(num2[i]-'0')+temp)/10;    }    if(len1 > len2)    {        for(;i < len1; ++i)        {            result[i] = (num1[i]-'0'+temp)%10+'0';            temp = (num1[i]-'0'+temp)/10;        }    }    else if(len1 < len2)    {        for(;i < len2; ++i)        {            result[i] = (num2[i]-'0'+temp)%10+'0';            temp = (num2[i]-'0'+temp)/10;        }    }    if(temp)            result[i] = temp + '0';}int main(){    int T;    int time = 1;    cin >> T;    while(T--)    {        mem(num1);        mem(num2);        mem(result);        cin >> num1;        cin >> num2;        cout << "Case " << time << ":" << endl;        cout << num1 << " + " << num2 <<" = ";        convert(num1,strlen(num1));        convert(num2,strlen(num2));        addnum();        convert(result,strlen(result));        cout << result << endl;        ++time;        if(T != 0)            cout << endl;    }    return 0;}

0 0
原创粉丝点击