50分,求调 %>_<%

P1055 [NOIP2008 普及组] ISBN 号码

wzhbsm @ 2024-08-10 20:10:57

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[12];
    for(int i=0;i<=12;i++)
    {
        cin>>a[i];
    }
    int s=1,x=0;
    for(int i=0;i<=10;i++)
    {
        if(a[i]!='-') 
        {
            x+=(a[i]-'0')*s,s++;    
        }
    }
    x%=11;
    if(a[12]-'0'==x)//0-670-82162-4
    {
        cout<<"Right";
    }
    else
    {
        for(int i=0;i<=11;i++)
        {
            cout<<a[i]; 
        }
        cout<<x;
    }
    return 0;

}

by are_you_sure @ 2024-08-10 20:29:14

因为最后一位有可能是 X,但是数字和字母的 ASCII 码不是连续的


by are_you_sure @ 2024-08-10 20:30:05

@wzhbsm 正确代码(自己理解)

#include<iostream>
using namespace std;
int main(){
    char c[14],a[12]={"0123456789X"};
    int sum=0,cs=0;
    for(int i=0;i<=12;i++){
        cin>>c[i];
        if(c[i]=='-' or i==12)continue;
        cs++;
        sum+=((c[i]-'0')*cs);
    }
    if(a[sum%11]==c[12])cout<<"Right";
    else{
        for(int i=0;i<12;i++){
            cout<<c[i];
        }
        cout<<a[sum%11];
    }
}

by wzhbsm @ 2024-08-19 16:24:39

@are_you_sure

\(≧▽≦)/ 谢谢%%%


|