模板 高精度加法

高位存储高位 低位存储低位
carry进位

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
string q,p;
int a[600],b[600],la,lb;
void add(int a[],int b[]){
    
    //数组可以函数赋值 
	int carry=0,c[600],lc=0;
	for(int i=0;i<la||i<lb;i++){
    
    //i<la||i<lb
		int temp=a[i]+b[i]+carry;
		c[lc++]=temp%10;
		carry=temp/10;
	} 
	if(carry)c[lc++]=carry;
	for(int j=lc-1;j>=0;j--)cout<<c[j];
}
int main(){
    
    
	cin>>q>>p;
	la=q.size(),lb=p.size();
	for(int i=0;i<la;i++)a[i]=q[la-i-1]-'0';//高位对高位
	for(int j=0;j<lb;j++)b[j]=p[lb-j-1]-'0'; 
	add(a,b);
	return 0;
	
}

猜你喜欢

转载自blog.csdn.net/Minelois/article/details/114108064