30分求助

P1055 [NOIP2008 普及组] ISBN 号码

guoxianshenguo @ 2021-12-30 13:46:22

rt

#include <bits/stdc++.h>
using namespace std;
int main(){
    string a;
    getline(cin,a);
    int c=a.size()-1;
    int m=0;
    int ci=1;
    for(int b=0;b<c;b++){
        if(a[b]>=48&&a[b]<=57){
            m+=ci*(a[b]-48);
            ci++;
        }
        else{
            continue;
        }
    }
    m=m%11;
    if(m==a[c]){
        cout<<"Right";
    }
    else{
        if(m==10) 
        {
            a[c]='X';
        }
        else
        {
            a[c]=m;
        }
        cout<<a;
    }
    return 0;
}

by 沉石鱼惊旋 @ 2021-12-30 16:24:53

老老实实写判断不香吗

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    cin>>a;
    if((a[0]-48+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9)%11==10)
    {
        if(a[12]=='X')
        {
            cout<<"Right";
            return 0;
        }
    }
    else 
    {
        if((a[0]-48+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9)%11==a[12]-48)
        {
            cout<<"Right";
            return 0;
        }
    }
    for(int i=0;i<a.size()-1;i++)
    {
        cout<<a[i];
    }
    if((a[0]-48+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9)%11==10)
    {
        cout<<"X";
    }
    else
    {
        cout<<(a[0]-48+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9)%11;
    }

    return 0;
}

by mmolmmol @ 2022-01-13 16:58:50

你是错在了没看题目要求吧!

如果不符合是需要输出一整串的,而不是单独输出那一个数字或字符,你对的位点就是错误的直接输出!


|