本地都没过QAQ大佬能看看吗
查看原帖
本地都没过QAQ大佬能看看吗
350448
FALCONAD楼主2021/10/18 21:01
#include<bits/stdc++.h>
using namespace std;
int n,m,step=0,s1[100001],s2[100001],s3[100001];
int ds(int a)
{
	int b=0;
	while(a>=1)
	{
		b*=10;
		b+=a%10;
		a/=10;
	}
	return b;
}
int ws(int a)
{
	int ans=1;
	while(a>=1)
	{
		ans++;
		a/=10;
	}
}
int main()
{
	cin>>n>>m;
	while(step!=30)
	{
		int wes=ws(m),m2=ds(m);
		for(int i=1;i<=wes;i++)
		{
			int x=1;
			while(m>=1) s1[x]=m%10;
			x=1;	
			while(m2>=1) s2[x]=m2%10;
		}
		for(int i=1;i<=wes;i++)
		{
			if(s1[i]+s2[i]>=n)
			{
				s3[i+1]+=1;
				s3[i]=s1[i]+s2[i]-n;	
			}
			else if(s1[i]+s2[i]<n) s3[i]+=s1[i]+s2[i];
		}
		int a1=0,a2=0;
		for(int i=1;i<=wes;i++)
		{
			a1*=10;
			a1+=s3[i];
		}
		for(int i=wes;i>=1;i--)
		{
			a2*=10;
			a2+=s3[i];
		}
		step++;
		if(a1==a2)
		{
			cout<<"STEP="<<step;
			return 0;
		}
	}
	cout<<"Impossible!";
	return 0;
}

2021/10/18 21:01
加载中...