不是哥们

P1015 [NOIP1999 普及组] 回文数

BNCDBD @ 2024-09-25 22:04:35

第一个点为什么WA了???

记录写的是输出STEP=0

求解


by Hope888 @ 2024-09-25 22:05:47

UB


by BNCDBD @ 2024-09-25 22:07:04

附上代码

#include<bits/stdc++.h>

using namespace std;
int arr[150],tmp[150],n;
int len=0,step=0;
inline void inputArray(){
    char c;
    c=getchar();
    if(c=='\n')return;
    inputArray();
    if(c>='0'&&c<='9'){
        arr[++len]=c-'0';
    }else if(c>='A'&&c<='F'){
        arr[++len]=c-'A'+10;
    }
}
void add(){
    len+=3;
    for(int i=1;i<=len;++i){
        arr[i]+=tmp[i];
    }
    for(int i=1;i<=len;++i){
        if(arr[i]>=n){
            arr[i+1]++;
            arr[i]-=n; 
        }
    }
    while(!arr[len])len--;
}
bool check(){
    for(int i=1;i<=len;++i){
        if(arr[i]!=arr[len+1-i])return false;
    }
    return true;
}
void turn(){
    for(int i=1;i<=len;++i){
        tmp[len+1-i]=arr[i];
    }
}
int main(){
    scanf("%d",&n);
    getchar();
    inputArray();
    while(!check()){
        turn();
        add();
        step++;
        if(step>30){
            printf("Impossible!");
            return 0;
        }
    }
    printf("STEP=%d",step);
    return 0;
}

by hyl_____ @ 2024-09-25 22:25:48

炸裂


by BNCDBD @ 2024-09-25 22:27:01

@hyl_____ 本人已炸


by hyl_____ @ 2024-09-25 22:29:57

#include<bits/stdc++.h>

using namespace std;
int arr[150],tmp[150],n;
int len=0,step=0;
inline void inputArray(){
    char c;
    c=getchar();
    if(c==EOF) return;
    inputArray();
    if(c>='0'&&c<='9'){
        arr[++len]=c-'0';
    }else if(c>='A'&&c<='F'){
        arr[++len]=c-'A'+10;
    }
}
void add(){
    len+=3;
    for(int i=1;i<=len;++i){
        arr[i]+=tmp[i];
    }
    for(int i=1;i<=len;++i){
        if(arr[i]>=n){
            arr[i+1]++;
            arr[i]-=n; 
        }
    }
    while(!arr[len])len--;
}
bool check(){
    for(int i=1;i<=len;++i){
        if(arr[i]!=arr[len+1-i])return false;
    }
    return true;
}
void turn(){
    for(int i=1;i<=len;++i){
        tmp[len+1-i]=arr[i];
    }
}
int main(){
    scanf("%d",&n);
    getchar();
    inputArray();
    while(!check()){
        turn();
        add();
        step++;
        if(step>30){
            printf("Impossible!");
            return 0;
        }
    }
    printf("STEP=%d",step);
    return 0;
}

你输入判定结束的地方不能用 \n,要用 EOF。因为洛谷是 LINUX 评测环境,换行符与 Windows 不一样,并且它的文件末尾不一定有换行符,所以可以用文件结束标志,即 EOF,这个是文件末尾自动加上的一个标识符。


by hyl_____ @ 2024-09-25 22:31:11

EOF 相当于一个字符,标记着文件结束,是操作系统自己加的。


by hyl_____ @ 2024-09-25 22:31:36

@BNCDBD


by BNCDBD @ 2024-09-25 22:32:08

@hyl_____ AC了,已关


by BNCDBD @ 2024-09-25 22:32:26

此贴结


|