99我
查看原帖
99我
1105563
xuyangming楼主2024/8/7 16:44
#include <iostream>
#include <string>
using namespace std;
int N=1e5+5;
int ans[N];
string subtraction(string s1, string s2)
{
	string ans("");
	int a[114519], b[114519], c[114519];
    int len1 = s1.size(), len2 = s2.size();
    if(len1 < len2 || len1 == len2 && s1 < s2)
	{
    	swap(s1, s2);
    	swap(len1, len2);
    	ans += "-";
	}
	for(int i = 0; i < len1; i++)
	{
		{
			a[i] = s1[len1 - i - 1] - 48;
		}
		for(int i = 0; i < len2; i++)
		{
			b[i] = s2[len2 - i - 1] - 48;
		}
		int i;
		for(i = 0; i < len1; i++)
		{
			c[i] = a[i] - b[i];
			if(c[i] < 0){
				c[i] += 10;
				a[i + 1]--;
			}
		}
		while(c[i] == 0 && i)
		{
			i--;
		}
		for(i; i >= 0; i--)
		{
			ans += 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 Division(string s,long long x)
{
    long long S=0;
    for(int i=0;i<s.size();i++)
	{
        S*=10;
        S+=s[i]-'0';
        if(S>=x)
		{
            ans[i]=S/x;
            S%=x;
        }
    }
	string res;
    int flag=0;
    for(int i=0;i<s.size();i++)
	{
        if(ans[i]!=0)
		{
			flag=1;
		}
        if(flag)
		{
            res=ans[i]+'0';
        }
    }
	if(!flag)
	{
		res+='0';
	}
    return res;
}
int ans[10000000]={};
string Division2(string s,string x)
{
	string S;
	for(int i=0;i<s.size();i++)
	{
		while (check(S,x))
		{
			S=subtraction(S,x);
			ans[i]++;
		}
		
	}
	string res;
	int flag=0;
	for(int i=0;i<i<s.size();i++)
	{
		if(a[i])
		{
			flag=1;
		}
		if(flag)
		{
			res+=a[i]+'0';
		}
	}
	if(!flag)
	{
		res+='0';
	}
	return res;
}
int main()
{
	string a;
	long long b;
	cin>>a>>b;
	cout<<Division2(a,b)<<endl;
    return 0;
}
2024/8/7 16:44
加载中...