评测点全WA,样例过了,求助
查看原帖
评测点全WA,样例过了,求助
953593
zhuangmy_楼主2023/12/3 20:03

代码:

#include <iostream>  
#include <cstring>
using namespace std;  
  
int as[15], bs[15], cs[15];
  
int isPal(int a, int xf)//后面的参数为0返回是否为回文
{
	int t = a, ans = 0;
	while (t > 0)
	{
		ans = ans * 10 + t % 10;
		t /= 10;
	}
	if (xf == 0) return (a == ans);
	return ans;
}
  
int add(int x, int a, int b)
{
	memset(as, 0, sizeof as);
	memset(bs, 0, sizeof bs);
	memset(cs, 0, sizeof cs);//cs存答案
	int cur = 15;
	while (a > 0 || b > 0)
	{
		as[--cur] = a % 10;
		bs[cur] = b % 10;
		a /= 10;
		b /= 10;
	}
	for (int i = 14; i >= cur; --i)
	{
		if (as[i] + bs[i] >= x)
		{
			cs[i - 1]++;
			if (i == cur) cur--;
			cs[i] += (as[i] + bs[i]) % x;
		}
		else
		{
			cs[i] += as[i] + bs[i];
		}
	}
	int c = 0;
	for (int i = 15; i >= cur; --i)
	{
		c = c * 10 + cs[i];
	}
	return c;
}
  
int main()  
{ 
	int cnt = 0;
	int a;//a进制
	cin >> a;
	int n;
	cin >> n;
	for (int i = 1; i <= 30; ++i)
	{
		n = add(a, n, isPal(n, 1));//加上倒数
		cnt++; 
		if (isPal(n, 0)) break;
	}
	if (!isPal(n, 0)) cout << "Impossible!" << endl;//30步后仍非回文
	else cout << "STEP=" << cnt << endl;
    return 0;  
}

自己下了评测点1, 2 10011 答案4我输出16,求大佬debug

2023/12/3 20:03
加载中...