hdu1002 A + B Problem II

本文介绍了如何使用C++和Java实现大数相加的问题。通过数组模拟加法过程,并利用Java自带的BigInteger类来简化操作。适用于需要处理超出基本数据类型范围的加法运算。

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

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002
题意:a+b,高精度加法
解析:c++用数组模拟加法,java就用自带的BigInteger
C++代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1205;
int a[maxn],b[maxn];
int c[maxn];
int main(void)
{
    int t,case_t = 1;
    scanf("%d",&t);
    while(t--)
    {
        if(case_t!=1)
            puts("");
        string t1,t2;
        cin>>t1>>t2;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        a[0] = t1.length(),b[0] = t2.length();
        for(int i=1;i<=a[0];i++)
            a[i] = t1[a[0]-i] - '0';
        for(int i=1;i<=b[0];i++)
            b[i] = t2[b[0]-i] - '0';
        int lenc = 1,x = 0;
        while(lenc <= a[0] || lenc <= b[0])
        {
            c[lenc] = b[lenc]+a[lenc]+x;
            x = c[lenc]/10;
            c[lenc] %= 10;
            lenc++;
        }
        c[lenc]=x;
        while(c[lenc]==0 && lenc>1)
            lenc--;
        printf("Case %d:\n",case_t++);
        cout<<t1<<" + "<<t2<<" = ";
        for(int i=lenc;i>=1;i--)
            printf("%d",c[i]);
        puts("");

    }
    return 0;
}
/*
000 0000
9999 1
1 9999
99900 00999
*/

Java代码

import java.math.BigInteger;
import java.util.Scanner;

public class Main{

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        for(int i=1;i<=n;i++)
        {
            BigInteger a = cin.nextBigInteger();
            BigInteger b = cin.nextBigInteger();
            BigInteger ans = a.add(b);
            System.out.println("Case " + i + ":");
            System.out.print(a + " + " + b + " = ");
            System.out.println(ans);
            if(i!=n)
                System.out.println("");
        }
        cin.close();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值