0分求助,我注释写的的表最清楚哦,但是不知道错在哪里了
查看原帖
0分求助,我注释写的的表最清楚哦,但是不知道错在哪里了
1181769
kelibzd楼主2024/10/26 23:09
//高精度加法 
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
string s1,s2;
int a[N],b[N],c[N];
int main(){
	cin>>s1>>s2;
	int la,lb,lc;
	la=sizeof(s1);
	lb=sizeof(s2);
	//接下来的操作是将字符串转化为数字,便于计算
	for(int i=0;i<la;i++)
	a[la-i]=a[i]-'0';//数字要倒存,因为加法是从最后一位加 
	for(int i=0;i<lb;i++)//并且这里有一个细节,个位数的下标值是1 
	b[lb-i]=b[i]-'0';
	 //so...
	 lc=max(la,lb)+1;
	 //接下来是核心的求和操作
	 for(int i=1;i<=lc;i++){
	 	c[i]+=a[i]+b[i];//当前位求和 
	 	c[i+1]=c[i]/10;//当前位向更高位的进位
		c[i]=a[i]%10;//当前位真正的值 
	 } 
	 if(c[lc]==0&&lc>0)//既保障了删除前导0,又保障了0+0=0这种情况 
	 lc--;
	 for(int i=lc;i>0;i--)
	 cout<<c[i];
	 return 0;
}
2024/10/26 23:09
加载中...