75分,第二个点wa,不知道为什么错,求求大佬
查看原帖
75分,第二个点wa,不知道为什么错,求求大佬
702822
Colas_miao_楼主2023/2/14 20:47

悬赏关注

#include<bits/stdc++.h>
using namespace std;
int n,s=0;
string add(string a,string b)
{
	string c;
	int t,i,j,lena,lenb,x=0;
	lena=a.size();
	lenb=b.size();
	for(i=0;i<lena/2;i++) swap(a[i],a[lena-i-1]);
	for(i=0;i<lenb/2;i++) swap(b[i],b[lenb-i-1]);
	for(i=0;i<lenb&&i<lena;i++)
	{
		t=a[i]-'0'+b[i]-'0'+x;
		x=t/n;
		c.push_back(t%n+'0');
	}
	while(i<lena)
	{
		t=a[i++]-'0'+x;
		x=t/n;
		c.push_back(t%n+'0');
	}
	while(i<lenb)
	{
		t=b[i++]-'0'+x;
		x=t/n;
		c.push_back(t%n+'0');
	}
	if(x>0)
	c.push_back(x+'0');
	int len=c.size();
	for(int i=0;i<len/2;i++)
	{
		swap(c[i],c[len-i-1]);
	}
	return c;
}
bool check(string a)
{
	int len=a.size();
	for(int i=0;i<len;i++)
	{
		if(a[i]!=a[len-i-1]) return 0;
	}
	return 1;
}
int main()
{
	string a,b,c;
	cin>>n>>a;
	if(check(c)==0)
	{
		cout<<"STEP=0";
		return 0;
	}
	int i=1;
	while(i<=30)
	{
		s++;
		reverse(a.begin(),a.end());
		b=a;
		reverse(a.begin(),a.end());
		a=add(a,b);
		if(check(a)==1)
		{
			printf("STEP=%d",s);
			return 0;
		}
		++i;
	}
	cout<<"Impossible!";
	return 0;
}

2023/2/14 20:47
加载中...