求解

P1055 [NOIP2008 普及组] ISBN 号码

thedog123 @ 2022-07-30 19:50:08

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char a[1001];
    cin.getline(a,1001);
    int lena = strlen(a),sum=0;
    int num = 0;
    for(int i=0;i<lena-1;i++){
        if(a[i]!='-'){
            sum += int(a[i]-'0') * (i-num+1);
        }else{
            num++;
        }
    }
    int c=0;
    if(a[lena-1]=='X'){
        c = 10;
    }else{
        c = int(a[lena-1]-'0');
    }
    if(sum%11==c){
        cout<<"Right"<<endl;
    }else{
        for(int i=0;i<lena-1;i++){
            cout<<a[i];
        }
        if(sum%11==10){
            cout<<'X';
        }else{
            cout<<sum%11;
        }
    }
    return 0;
}

by metaphysis @ 2022-07-31 10:10:17

@thedog123

输入可能是 Windows 环境下生成的数据,因此按您的输入处理可能存在问题,算法是没问题的。也就是说,您读取的输入中可能会包含换行符。


by thedog123 @ 2022-07-31 21:28:11

@metaphysis 谢谢


|