Mukerzmg @ 2023-10-13 22:08:46
本地测试输出正确,但是全是RE
求助
#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]++;
}
}
}