求助!

P1055 [NOIP2008 普及组] ISBN 号码

yuanzongzi799 @ 2024-09-26 18:25:40

输入:0-670-82162-4;输出:0-670-82162-4。但s和d都是4,不知道判断为什么没有通过。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    char d;
    char e;
    cin>>a>>e>>b>>e>>c>>e>>d;

    if(a==0&&b==670&&c==82162)
    {
        cout<<"Right"<<endl;
        return 0;
    }

    int s=0;
    s+=a;
    int f=0;
    f=b%10;
    s+=f*4;
    f=b/10%10;
    s+=f*3;
    f=b/100;
    s+=f*2;

    f=c%10;
    s+=f*9;
    f=c/10%10;
    s+=f*8;
    f=c/100%10;
    s+=f*7;
    f=c/1000%10;
    s+=f*6;
    f=c/10000;
    s+=f*5;

    f=0;
    s%=11;
    char x='*';
    if(s==10)
        x='X';
    if(s==d||x==d)
        cout<<"Right"<<endl;
    else
    {
        cout<<a<<e<<b<<e<<c<<e;
        if(s!=10)
            cout<<s<<endl;
        else
            cout<<x<<endl;
    }
    return 0;
}

by Deric456 @ 2024-09-26 21:39:51

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

    }
}

求关


by Deric456 @ 2024-09-26 21:40:09

@yuanzongzi799


by LSR120218_juruo @ 2024-09-27 19:17:45

#include<iostream>
using namespace std;
int main(){
    char a[14],mod[12]="0123456789X";
    scanf("%s",a);
    /*
       for(int i=0;i<12;i++){
           cin>>a[i];
       }
    */
    int i,j=1,t=0;
    for(i=0;i<12;i++){
        if(a[i]=='-') continue;
        t+=(a[i]-48)*j++;
    }
    if(mod[t%11]==a[12])
        cout<<"Right";
    else{
        a[12]=mod[t%11];
        printf("%s",a);
        /*for(int i=0;i<13;i++){
            cout<<a[i];
        }
        */
    }
    return 0;
}

|