99我
查看原帖
99我
1105563
xuyangming楼主2024/8/7 13:32
#include<bits/stdc++.h>
using namespace std;
string addition(string s1, string s2) {
	int a[2500] = {}, b[2500] = {}, c[2500] = {};
	for(int i = 0; i < s1.size(); i++)
		a[i]=s1[s1.size() - i - 1]-'0';
	for(int i = 0; i < s2.size(); i++)
		b[i]=s2[s2.size() - i - 1]-'0';
	int len = max(s1.size(), s2.size());
	for(int i = 0; i < len; i++) {
		c[i] += a[i] + b[i];
		if(c[i] > 9) {
			c[i + 1]++;
			c[i] %= 10;
		}
	}
	if(c[len] != 0)
		len++;
	string ans="";
	for(int i = len - 1; i >= 0; i--) {
		ans += (char)(c[i]+48);
	}
	return ans;
}
bool check(string s1,string s2){
	if(s1.size()>s2.size())return 1;
	else if(s1.size()<s2.size())return 0;
	else{
		if(s1>s2)return 1;
		else return 0;
	}
}
string subtraction(string s1, string s2) {
	if(s1==s2){
		string ans;
		ans="0";
		return ans;
	}
	bool ok = check(s1,s2);
	if(!ok){
		swap(s1,s2);
	}
	int a[25000] = {}, b[25000] = {}, c[25000] = {},d[25000]={};
	for(int i = 0; i < s1.size(); i++)
		a[i]=s1[s1.size() - i - 1]-'0';
	for(int i = 0; i < s2.size(); i++)
		b[i]=s2[s2.size() - i - 1]-'0';
	int len = max(s1.size(), s2.size());
	for(int i = 0; i < len; i++) {
		c[i]=a[i]-b[i]-d[i];
		if(c[i]<0){
			d[i+1]++;
			c[i]+=10;//借位 
		}
	}
	while(c[len]==0){//
		len--;
	} 
	string ans="";
	for(int i = len ; i >= 0; i--) {
		ans += (char)(c[i]+48);
	}
	if(!ok){
		ans="-"+ans;
	}
	return ans;
}
string multiplication(string s1,string s2){
	reverse(s1.begin(),s1.end());
	reverse(s2.begin(),s2.end());
	int a[2005]={},b[2005]={},ans[5000]={};
	for(int i=0;i<s1.size();i++)a[i]=s1[i]-'0';
	for(int i=0;i<s2.size();i++)b[i]=s2[i]-'0';
	for(int i=0;i<s1.size();i++){
		for(int j=0;j<s2.size();j++){
			ans[i+j]+=a[i]*b[j];
		}
	}
	for(int i=0;i<s1.size()+s2.size();i++){
		ans[i+1]+=ans[i]/10;
		ans[i]%=10;
	}
	int flag=0;
	string res;
	for(int i=s1.size()+s2.size();i>=0;i--){
		if(ans[i]>0){
			flag=1;
		}
		if(flag){
			res+=ans[i]+'0';
		}
	}
	if(!flag)res+='0';
	return res;
}
int ans[1000000];
string Division(string s,string x){
	string S;
	for(int i=0;i<s.size();i++){
		S+=s[i];
		while(check(S,x)){
			S=subtraction(S,x);
			ans[i]++;
		}
	}
	string res;
	int flag=0;
	for(int i=0;i<s.size();i++){
		if(ans[i])flag=1;
		if(flag)res+=ans[i]+'0';
	}
	if(!flag)res+='0';
	return res;
}
 int main()
{
	string a,b;
	cin>>a>>b;
	cout<<Division(a,b)<<endl;
	return 0;
}
2024/8/7 13:32
加载中...