求助大佬,60分过不了

P1055 [NOIP2008 普及组] ISBN 号码

zxy_sh @ 2022-07-23 10:35:57

自测正确

#include <bits/stdc++.h>
using namespace std; 

int main()
{
    int ans=0;
    char b[15];
    for(int i=1;i<=13;i++)
        cin>>b[i];
    ans=(b[1]-48)*1+(b[3]-48)*2+(b[4]-48)*3+(b[5]-48)*4+(b[7]-48)*5+(b[8]-48)*6+(b[9]-48)*7+(b[10]-48)*8+(b[11]-48)*9;
    ans%=11;
    if (ans==10) ans='X';
    if (ans==b[13]) cout<<"Right"<<endl;
    else 
    {
        for(int i=1;i<=12;i++)
            cout<<b[i];
        cout<<ans<<endl;
    }
    return 0;
} 

大佬帮忙纠错, 谢谢!


by metaphysis @ 2022-07-23 15:24:24

@zxy_sh

修改如下:

#include <bits/stdc++.h>
using namespace std; 

int main()
{
    int ans=0;
    char b[15];
    for(int i=1;i<=13;i++)
        cin>>b[i];
    ans=(b[1]-48)*1+(b[3]-48)*2+(b[4]-48)*3+(b[5]-48)*4+(b[7]-48)*5+(b[8]-48)*6+(b[9]-48)*7+(b[10]-48)*8+(b[11]-48)*9;
    ans%=11;
    if (ans==10) ans='X';
    // !
    if (ans==b[13] || ans == b[13] - '0' ) cout<<"Right"<<endl;
    else 
    {
        for(int i=1;i<=12;i++)
            cout<<b[i];
        // !
        if (ans == 'X') cout << 'X';
        else cout << ans;
        cout << endl;
    }
    return 0;
}

具体为什么,请您自己琢磨一下。


by zxy_sh @ 2022-07-28 10:24:37

@metaphysis 我貌似看懂了,因为数组b[15]是char,而ans是int 对吗


|