Help,60,TLE
查看原帖
Help,60,TLE
1357674
BNCDBD楼主2024/10/11 21:05
#include<bits/stdc++.h>

using namespace std;
int n[100006],m[100006],ans[100006],ln=0,lm=0,lans=1; 
void mnu(){
	for(int i=0;i<ln;++i){
		if(n[i]<m[i]){
			n[i+1]--;
			n[i]+=10;
		}
		n[i]-=m[i];
	}
	while(n[ln-1]==0){
		ln--;
	}
}
void addans(){
	ans[0]++;
	for(int i=0;i<lans;++i){
		ans[i+1]+=ans[i]/10;
		ans[i]%=10;
	}
	while(ans[lans]!=0){
		lans++;
	}
}
int cmp(){
	if(ln<lm){
		return -1;
	}else if(ln>lm){
		return 1;
	}
	for(int i=ln-1;i>=0;--i){
		if(n[i]>m[i]){
			return 1;
		}else if(n[i]<m[i]){
			return -1;
		}
	}
	return 0;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0); 
	string a,b;
	cin>>a>>b;
	for(int i=a.length()-1;i>=0;--i){
		n[ln++]=a[i]-'0';
	}
	for(int i=b.length()-1;i>=0;--i){
		m[lm++]=b[i]-'0';
	}
	if(ln<lm){
		cout<<0;
		return 0;
	}else if(ln==lm){
		if(cmp()==-1){
			cout<<0;
		}
	}
	while(1){
		int t=cmp();
		if(t==1){
			mnu();
			addans();
		}else if(t==0){
			addans();
			break;
		}else{
			break;
		}
	}
	for(int i=lans-1;i>=0;--i){
		cout<<ans[i];
	}
	return 0;
}

已红温

2024/10/11 21:05
加载中...