好难的题!!!(go头保命)
2025-08-18 11:44:23
发布于:上海
5阅读
0回复
0点赞
#include<bits/stdc++.h>
#define SIZE 500
using namespace std;
int a[SIZE],b[SIZE],c[SIZE];
void converts(int *a,string s){
	reverse(s.begin(),s.end());
	int i,len=s.size();
	for(i=0;i<len;i++)a[i]=s[i]-'0';
}
void add(int *a,int *b,int len=SIZE){
	for(int i=0;i<len;i++){
		if((a[i]+=b[i])>=10){
			a[i]-=10;
			a[i+1]++;
		}
	}
}
void print(int *a,int len=SIZE){
	int i;
	for(i=len;i>0;i--)if(a[i]>0)break;
	for(int j=i;j>=0;j--)cout<<a[j];
}
bool le(int *a,int *b,int len=SIZE){
	int i;
	for(i=len-1;a[i]==b[i]&&i>=0;i--);
	return i<0||a[i]<b[i];
}
void mul(int *c,int *a,int *b){
	converts(c,"0");//重设(最低位为零)
	for(int i=0;i<SIZE;i++)
		for(int j=1;j<=b[i];j++)//重复b[i]次
			add(c+i, a, SIZE-i);//模拟乘法
		// c+i指针,从c+i开始 SIZE-i对应防越界
}
void mulint(int *a,int b){
	for(int i=0,c=0;i<SIZE;i++){
		c=c/10+a[i]*b;//理论上输出c即可
		a[i]=c%10;//但是我们是void要改变a,而且我们是高精度
	}
}
void sub(int *a,int *b,int len=SIZE){
	for(int i=0;i<len;i++){
		if((a[i]-=b[i])<0){
			a[i+1]--;
			a[i]+=10;
		}
	}
}
void copy(int *a,int *b,int len=SIZE){
	for(int i=0;i<len;i++)a[i]=b[i];
}
int main(){
	string s1,s2;
	cin>>s1>>s2;
	converts(a,s1);
	converts(b,s2);
	add(a,b);
	//copy(a,c);
	print(a);
	return 0;
}
这里空空如也


有帮助,赞一个