20分 蒟蒻落泪

P1307 [NOIP2011 普及组] 数字反转

ASOUL_Official @ 2020-06-07 11:14:35

思路应该没错吧……

但是本地测试的时候数据后面会莫名其妙出现一个%(macOS 10.15.5,clang 11.0.3)

在在线IDE测试的时候会在数据前面出现一个%00(输进浏览器地址栏得到的字符)

是数据类型的锅还是我学艺不精(

123
321%
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
    string a;
    int i;
    cin>>a;
    if(a[0]=='-'){
        cout<<"-";
        for(i=a.length()-2;i>=0;i--){
            if(a[1]==0){
                continue;
            }
            cout<<a[i];
        }
    }else{
        for(i=a.length()-1;i>=0;i--){
            if(a[0]==0){
                continue;
            }
            cout<<a[i];
        }
    }
    return 0;
}

by ASOUL_Official @ 2020-06-07 11:16:56

而且比较惨的就是没去0(


by Meatherm_test @ 2020-06-07 11:19:08

捕捉 dd 头子


by Meatherm_test @ 2020-06-07 11:23:29

@lancdn 首先修正了下语法和细节错误

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
    string a;
    int i;
    cin>>a;
    if(a[0]=='-'){
        cout<<"-";
        for(i=a.length()-1;i;i--){
            if(a[i]=='0'){ // 是 '0' 不是 0
                continue;
            }
            cout<<a[i];
        }
    }else{
        for(i=a.length()-1;i>=0;i--){
            if(a[i]=='0'){
                continue;
            }
            cout<<a[i];
        }
    }
    return 0;
}

思路的话,有点问题。想想 2020 会被反转成什么?


by Phykyer @ 2020-06-07 11:25:13

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
    string a;
    int i;
    cin>>a;
    if(a[0]=='-'){
        cout<<"-";
        bool pd = 0;
        for(i=a.length()-1;i>=1;i--){
            if(a[i]=='0' && pd == 0){
                continue;
            }
            pd = 1;
            cout<<a[i];
        }
    }else{
        bool pd = 0;
        for(i=a.length()-1;i>=0;i--){
            if(a[i]=='0' && pd == 0){
                continue;
            }
            pd = 1;
            cout<<a[i];
        }
    }
    return 0;
}

这样就行,问题挺多的,自己看看吧


by Phykyer @ 2020-06-07 11:28:24

@lancdn


by andyli @ 2020-06-07 11:28:36

@lancdn

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
    string a;
    int i;
    cin>>a;
    if (a == "0") return cout<<"0",0;
    while (!a.empty() && a.back() == '0') a.pop_back();
    if(a[0]=='-'){
        cout<<"-";
        for(i=a.length()-1;i>=1;i--){
            cout<<a[i];
        }
    }else{
        for(i=a.length()-1;i>=0;i--){
            cout<<a[i];
        }
    }
    return 0;
}

by andyli @ 2020-06-07 11:29:57

@Phykyer 当 n=0 时无输出


by Phykyer @ 2020-06-07 11:31:45

emmm确实没想到,就直接吧错的地方改了,但是这题好像也没有这个点就是了


by ASOUL_Official @ 2020-06-08 17:10:47

@andyli pop_back?


by andyli @ 2020-06-09 14:35:51

@lancdn 从字符串移除末字符


| 下一页