本地测试点1输出正确,但是全是RE
查看原帖
本地测试点1输出正确,但是全是RE
752466
Mukerzmg楼主2023/10/13 22:08

本地测试输出正确,但是全是RE

求助

C++ code:


#include <bits/stdc++.h>
using namespace std;
int num[31][101];
bool pal(int x);
void carry(int y,int n);
int main()
{
	int n,sum=0;
	char c;
	cin>>n;
	scanf("%c",&c);
	num[0][0]=0;
	for(int i=1;1;i++)
	{
		scanf("%c",&c);
		if(c>='0'&&c<='9')
			num[0][i]=(int)(c-'0');
		else if(c>='A'&&c<='F')
			num[0][i]=(int)(c-'A'+10);
		else
			break;
		num[0][0]++;
	}
	if(pal(0))
	{
		cout<<"STEP="<<0;
		return 0;
	}
	for(int i=1;i<=30;i++)
	{
		num[i][0]=num[i-1][0];
		for(int j=1;j<=num[i-1][0];j++)
			num[i][j]=num[i-1][j]+num[i-1][num[i-1][0]+1-j];
		carry(i,n);
		if(pal(i))
		{
			printf("STEP=%d",i);
			return 0;
		}
	}
	cout<<"Impossible!";
	return 0;
}
bool pal(int x)
{
	for(int i=1;i<=(num[x][0]+1)/2;i++)//第i 位
		if(num[x][i]!=num[x][num[x][0]+1-i])//whether pal or not
			return 0;
	return 1;
}
void carry(int y,int n)
{
	for(int i=1;i<=num[y][0];i++)
	{
		if(num[y][i]>=n)
		{
			num[y][i+1]++;
			num[y][i]-=n;
			if(i==num[y][0])
				num[y][0]++;
		}
	}
}
2023/10/13 22:08
加载中...