求调(T fly了)
查看原帖
求调(T fly了)
750137
WangNONO楼主2024/12/10 00:09
#include<bits/stdc++.h>
#define la a.size()
#define lb b.size()
using namespace std;

string s1,s2,ans;
int n,h,al,bl,len,len1,len2,f;
int sstoi(string s)
{
	int x=0;char c;
	for(int i=0;i<s.size();i++)c=s[i],x=x*10+c-'0';
	return x;
}
string itos(int x)
{
	string s;
	while(x)
	{
		s=s+(char)(x%10+'0');
		x/=10;
	}
	return s;
}
string chu(string s,int x)
{
	ans="";
	len=s.size(),f=0;
	for(int i=0;i<len;i++)
	{
		h=f+(s[i]-'0');
		ans=ans+(char)((int)(h/x)+'0');
		f=h%x;
	}
	while(ans[0]=='0')ans.erase(ans.begin());
	return ans;
}
string cheng(string s,int x)
{
	ans="";
	len=s.size(),f=0;
	for(int i=len-1;i>=0;i--)
	{
		h=f+x*((s[i]-'0'));
		ans=(char)((h%10)+'0')+ans;
		f=h/10;
	}
	if(f)ans=(char)(f+'0')+ans;
	return ans;
}
string jian(string s1,string s2)
{
	len1=s1.size(),len2=s2.size(),f=0;
	ans="";
	for(int i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--)
	{
		h=s1[i]-s2[j]-f;
		if(h<0)h+=10,f=1;
		else f=0;
		ans=(char)(h+'0')+ans;
	}
	if(len1>len2)
	{
		for(int i=len1-len2-1;i>=0;i--)
		{
			h=s1[i]-'0'-f;
			if(h<0)h+=10,f=1;
			else f=0;
			ans=(char)(h+'0')+ans;
		}
	}
	else
	{
		for(int i=len2-len1-1;i>=0;i--)
		{
			h=s2[i]-'0'-f;
			if(h<0)h+=10,f=1;
			else f=0;
			ans=(char)(h+'0')+ans;
		}
	}
	while(ans[0]=='0')ans.erase(ans.begin());
	return ans;
}

string solve(string a,string b)
{
	string s="1";
	while(la>10||lb>10)
	{
		al=a[la-1]-'0';
		bl=b[lb-1]-'0';
		if(al%2==0&&bl%2==0)a=chu(a,2),b=chu(b,2),s=cheng(s,2);
		if(al%2==1&&bl%2==0)b=chu(b,2);
		if(al%2==0&&bl%2==1)a=chu(a,2);
		if(al%2==1&&bl%2==1)
		{
			if(la>lb||(la==lb&&a>b))a=jian(a,b);
			else b=jian(b,a);
		}
	}
	return cheng(s,__gcd(sstoi(a),sstoi(b)));
}
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>s1>>s2;
	cout<<solve(s1,s2);
	return 0;
}

求调%%%

2024/12/10 00:09
加载中...