本地可以跑,提交编译失败
查看原帖
本地可以跑,提交编译失败
940181
Ohuohuo_楼主2023/9/29 20:03
#include<iostream>
using namespace std;
int n;
char s[200];
int a[200],b[200];
int cnt, lens, cur;

bool check()
{
	for (int i = lens+1 - 1; i > 0; i--)
	{
		if (a[i]!=a[lens +1-i])
		{
			return false;
		}
	}
	return true;
}

void add()
{
	//逆序存储入b
	for (int i = 1; i <= lens; i++)
	{
		b[i] = a[lens + 1 - i];
	}
	//两数相加
	cur = 1;
	for (int i = 1; i <= lens; i++)
	{
		a[i] += b[i];
		if (a[i]>=n)
		{
			a[i] -= n;
			a[i + 1]++;
		}
		cur++;
	}
	if (a[cur] == 0 && cur > 1) cur--;
	lens = cur;
	//for (int i = lens; i >= 1; i--)
	//{
	//	cout << a[i];
	//}
	//cout << endl;
}

int main() {
	cin >> n;
	cin >> s;
	lens = strlen(s);
	int flage = 1;
	for (int i = 0; i < lens; i++)
	{
		if (s[i]!=s[lens-1-i]) flage = 0;
	}
	if (flage)
	{
		cout << "STEP=0"; return 0;
	}
	
	//数据类型转换并存入a中
	for (int i = 0; i < lens; i++)
	{
		a[lens - i] = s[i] - 48;
	}

	while (!check())
	{
		cnt++;
		add();
		if (cnt>30)
		{
			cout << "Impossible!"; return 0;
		}
	}
	cout << "STEP=" << cnt;

	return 0;
}

2023/9/29 20:03
加载中...