fjnu 1743 百位数精确求和

本文介绍了一种处理两个高精度非负整数相加的算法实现,通过字符串输入方式处理大整数,并确保结果的准确性。该算法适用于超出常规整数类型限制的大数值运算。

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

Description

键入两个高精度非负整数(不超过230位),求它们的和(精确值)。

Input

数字串1
数字串2

Output

两数之和(并换行回车)

Sample Input

234567891234
143986543788123

 

Sample Output

144221111679357
KEY:大整数求和
 
Source:#include<iostream>
#include
<cstring>
using namespace std;

char s1[231];
char s2[231];
int a[231];
int b[231];
int c[231];

void add()
{
    
int la,lb;
    la
=strlen(s1);
    lb
=strlen(s2);
    
int i,j;
    
for(i=0,j=230-la+1;i<la;i++)
        a[j
++]=s1[i]-48;
    
for(i=0,j=230-lb+1;i<lb;i++)
        b[j
++]=s2[i]-48;
    
int time=la;
    
if(la<lb) time=lb;
    
for(i=230,j=1;j<=time;i--,j++)
    
{
        c[i]
+=a[i]+b[i];
        
if(c[i]>=10)
        
{
            
int t;
            t
=c[i]/10;
            c[i]
=c[i]%10;
            c[i
-1]+=t;
        }

    }

}


void output()
{
    
int i=0;
    
while(c[i]==0) i++;
    
for(;i<=230;i++)
        cout
<<c[i];
    cout
<<endl;
}



int main()
{
//    freopen("fjnu_1743.txt","r",stdin);
    cin>>s1;
    cin
>>s2;
    
if(!strcmp(s1,"0")&&!strcmp(s2,"0") ) 
    
{
        cout
<<"0"<<endl;
        exit(
1);
    }

    add();
    output();
}



  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值