为什么保龄啊!
查看原帖
为什么保龄啊!
494699
卷王慢即快楼主2022/10/30 20:58
#include <bits/stdc++.h>
using namespace std;
int n, step = 0;
int len;
string s1, s2;
inline void work() //计算s2并累加 
{
	for(int i = 0; i < len; i++)
		s2[len-i-1] = s1[i];
	len += 2;
	for(int i = 0; i < len; i++)
	{
		s1[i] = s1[i] + s2[i];
		s1[i+1] += s1[i] / n;
		s1[i] %= n;
	}
	while(!s1[len-1]) len--;
}
inline bool check() //判断是否是回文数 
{
	for(int i = 0; i < len / 2; i++)
		if(s1[i] != s1[len-i-1]) return false;
	else return true;
}
int main()
{
	cin >> n >> s1;
	len = s1.size();
	for(int i = 0; i < len; i++)
	{
		if(s1[i] >= '0' && s1[i] <= '9') s1[i] = s1[i] - '0';
		else s1[i] = s1[i] - 'A' + 10;
	}
	while(check() == false)
	{
		step++;
		if(step > 30) break;
		work();
	}
	if(step <= 30) cout << "STEP=" << step;
	else cout << "Impossible!"; 
	return 0;
}
2022/10/30 20:58
加载中...