求大神指点

P1055 [NOIP2008 普及组] ISBN 号码

songyuexuan @ 2022-02-09 15:49:23

为何输入样例也会全错!!!求大神指点!

输入样例1: 结果:0-670-82162-2

输入样例2: 结果:0-670-82162-6

代码如下:

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char a[1001];
    int sum=0,s=0;
  //sum为记录-号数量的变量,s是记录和的变量
    cin>>a;
    for(int i=0;i<strlen(a);i++){
        if(a[i]=='-') sum++;
        s+=(a[i]-'0')*(i+1-sum);
    }
    if(a[strlen(a)-1]==s%11) {
        cout<<"Right";
        return 0;
    }
    for(int i=0;i<strlen(a)-1;i++){
        cout<<a[i];
    }
    cout<<s%11;
    return 0;
}

(我英语不好,用的都是a,b之类的变量,全靠理解)


by qjxqjxqjx @ 2022-02-09 17:42:08

@songyuexuan


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

by songyuexuan @ 2022-02-10 18:02:14

@qjxqjxqjx 谢谢大神


|