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

P1015 [NOIP1999 普及组] 回文数

Mukerzmg @ 2023-10-13 22:08:46

本地测试输出正确,但是全是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]++;
        }
    }
}

|