0分求助
查看原帖
0分求助
1555091
Starry_Knight楼主2025/7/28 11:39
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+7;

void jia(string s1,string s2){
	int l1=s1.size(),l2=s2.size();
	int a[N],b[N],c[N];
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	int la=0,lb=0;
	for(int i=l1-1;i>=0;i--)a[++la]=s1[i]-'0';
	for(int i=l2-1;i>=0;i--)b[++lb]=s2[i]-'0';
	int len=max(la,lb);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]+b[i];
		c[i+1]+=c[i]/10;
		c[i]%=10;
	}
	if(c[len+1]>0)len++;
	while(c[len]==0&&len>1)len--;
	for(int i=len;i>=1;i--)cout<<c[i];
	cout<<endl;
}

void jian(string s1,string s2){
	int l1=s1.size(),l2=s2.size(),la=0,lb=0;
	int a[N],b[N],c[N];
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	if(s1.size()<s2.size()||(s1.size()==s2.size()&&s1<s2)){
		cout<<"-";
		swap(s1,s2);
		l1=s1.size(),l2=s2.size();
	}
	for(int i=l1-1;i>=0;i--)a[++la]=s1[i]-'0';
	for(int i=l2-1;i>=0;i--)b[++lb]=s2[i]-'0';
	int len=max(la,lb);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]-b[i];
		if(c[i]<0){
			c[i]+=10;
			a[i+1]--;
		}
	}
	while(c[len]==0&&len>1)len--;
	for(int i=len;i>=1;i--)cout<<c[i];
	cout<<endl;
}

void cheng(string a1,string b1){
	int a[10010],b[10010],c[20050],la,lb,lc,x=0;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	la=a1.size(),lb=b1.size();
	for(int i=0;i<la;i++)a[la-i]=a1[i]-'0';
	for(int i=0;i<lb;i++)b[lb-i]=b1[i]-'0';
	for(int i=1;i<=la;i++){
		x=0;
		for(int j=1;j<=lb;j++){
			c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
			x=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
		c[i+lb]=x;
	}
	lc=la+lb;
	while(c[lc]==0&&lc>1)lc--;
	for(int i=lc;i>=1;i--)cout<<c[i];
	cout<<endl;
}void sub(int x[],int y[]){
	for(int i=1;i<=x[0];i++){
		if(x[i]<y[i]){
			x[i]=x[i]+10;
			x[i-1]=x[i-1]-1;
		}
		x[i]=x[i]-y[i];
	}
}

void cpy(int x[],int y[],int o){
	for(int i=1;i<=x[0];i++){
		y[i+o]=x[i];
	}
	y[0]=x[0]+o;
}

bool cmp(int x[],int y[]){
	if(x[0]>y[0])return true;
	if(x[0]<y[0])return false;
	if(x[0]==y[0]){
		for(int i=1;i<=x[0];i++){
			if(x[i]>y[i])return true;
			if(x[i]<y[i])return false;
		}
	}
	return true;
}

void chu(string s1,string s2){
	int a[10010]={0};
	int b[10010]={0};
	int c[10010]={0};    
	a[0]=s1.size();
	b[0]=s2.size();
	for(int i=1;i<=a[0];i++){
		a[i]=s1[i-1]-'0';
	}
	for(int i=1;i<=b[0];i++){
		b[i]=s2[i-1]-'0';
	}
	c[0]=a[0]-b[0]+1;
	int t[20010]={0};
	for(int i=1;i<=c[0];i++){
		memset(t,0,sizeof(t));
		cpy(b,t,i-1);
		a[0]=b[0];
		while(cmp(a,t)==true){
			sub(a,t);
			c[i]++;
		}
	}
	while(c[0]>1&&c[c[0]]==0)c[0]--;
	while(a[0]>1&&a[a[0]]==0)a[0]--;
	for(int i=1;i<=c[0];i++){
		cout<<c[i];
	}
	cout<<endl;
	for(int i=1;i<=a[0];i++){
		cout<<a[i];
	}
}
int main(){
	string s1,s2;
	cin>>s1>>s2;
	jia(s1,s2);
	jian(s1,s2);
	cheng(s1,s2);
	chu(s1,s2);
	return 0;
}

玄关

2025/7/28 11:39
加载中...