大数运算 A + B Problem II

 

http://acm.hdu.edu.cn/showproblem.php?pid=1002

代码

复制代码
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
struct bignum
{
    int list[2000];
    int len;
    bignum()
    {
        memset(list, 0, sizeof(list));
        len =0;
    }
}aa,bb,ans;
using namespace std;
bignum change(string a)
{
    bignum tmp;
    tmp.len = a.length();
    for (int i = 0; i < a.length(); i++)
        tmp.list[i] = a[tmp.len - i-1]-'0';
    return tmp;
}
bignum add(bignum a, bignum b)
{
    int t = 0,i;
    bignum ans;
    ans.len = a.len > b.len ? a.len : b.len;
    for ( i = 0; i < a.len ||i< b.len; i++)
    {
        ans.list[i] = (t + a.list[i] + b.list[i]) % 10;
        t= (t + a.list[i] + b.list[i]) / 10;
    }
    if (ans.list[i] > 10)
    {
        ans.list[i] = ans.list[i] % 10;
        ans.list[i + 1] /= 10;
    }
        return ans;
}
int main()
{
    int n;
    string a, b;
    scanf("%d", &n);
    for (int k = 1; k <=n;k++)
    {
        printf("Case %d:\n", k);
        cin >> a >> b;
        cout << a << " + " << b << " = ";
        aa = change(a); bb = change(b);
        ans = add(aa, bb);
        for (int i = ans.len-1; i >= 0;i--)
            cout << ans.list[i];
        cout << endl;
        if (k != n)cout << endl;
    }

}
复制代码

 

posted @   Jason66661010  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示