HDOJ 1002 A + B II

来源:互联网 发布:linux开发入门教程 编辑:程序博客网 时间:2024/05/17 23:40

题目:高精度加法

思路:之前做过,不过那个时候思路很复杂,代码写得老长,今天重新做,用了一个新的方法,长度短的补足0,这样的话就不用考虑很多种情况了!还有用string的话要注意插入顺序!


#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <string>#include <map>#include <vector>#include <queue>using namespace std;int main(){    int t;    scanf( "%d", &t );    for( int w = 1; w <= t; w++ )    {        string n, m;        string ans;        cin >> n >> m;        cout << "Case " << w << ":" << endl;        cout << n << " + " << m << " = ";        int len1 = n.length();        int len2 = m.length();        if( len1 < len2 )        {            for( int i = 0; i < len2 - len1; i++ )            {                n = "0" + n;            }        }        else        {            for( int i = 0; i < len1-len2; i++ )            {                m = "0" + m;            }        }        //cout << n << ' ' << m << endl;        int carry = 0;        int len = n.length();        for( int i = len - 1; i >= 0; i-- )        {            int tmp = n[i] + m[i] - 2*'0' + carry;            carry = tmp / 10;            ans = char ( tmp%10 + '0' ) + ans;        }        if( carry )        {            ans = '1' + ans;        }        cout << ans << endl;        if( w != t )        {            puts("");        }    }    return 0;}


0 0
原创粉丝点击