hdu 1002 A + B Problem II(大数模板)

本文介绍了一种使用数组存储大数并实现加法运算的方法,基于此模板还可以进一步扩展实现减法和乘法等操作。代码示例中详细展示了如何通过C++实现这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

大数运算,用数组存数据,参考刘汝佳的《算法竞赛入门经典》里面写的,顺便写模板。
还可以用这个模板来写减法、乘法。
除法运算暂时不清楚如果有小数怎么处理。。。

AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

#define MAX 10000
struct node
{
    int len,s[MAX];
    node()
    {
        memset(s,0,sizeof(s));
        len = 0;
    }
};

int main()
{
    int t,k,n1,n2;
    int i;
    char s1[MAX],s2[MAX],p;
    scanf("%d",&t);
    k = 0;
    while(t--)
    {
        k++;
        node a,b;
        a.len = b.len = 0;
        scanf("%s%s",&s1,&s2);
        n1 = strlen(s1);
        n2 = strlen(s2);
        for(i = n1-1; i >= 0; i--)
        {
            a.s[a.len] = s1[i]-'0';
            a.len++;
        }
        for(i = n2-1; i>=0; i--)
        {
            b.s[b.len] = s2[i]-'0';
            b.len++;
        }
        node sum;
        int len,add = 0;
        len = max(n1,n2);
        for(i = 0; i < len; i++)
        {
            add = a.s[i]+b.s[i]+add;
            sum.s[i] = add%10;
            add/=10;
        }
        sum.len = i;
        if(add>0)
        {
            sum.s[sum.len] = add;
            add = 0;
            sum.len++;
        }
        printf("Case %d:\n",k);
        printf("%d",a.s[a.len-1]);
        for(i = a.len-2; i >= 0; i--)
        {
            printf("%d",a.s[i]);
        }
        printf(" + ");
        printf("%d",b.s[b.len-1]);
        for(i = b.len-2; i >= 0; i--)
        {
            printf("%d",b.s[i]);
        }
        printf(" = ");
        printf("%d",sum.s[sum.len-1]);
        for(i = sum.len-2; i >= 0; i--)
        {
            printf("%d",sum.s[i]);
        }
        printf("\n");
        if(t!=0)
        {
            printf("\n");
        }
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值