50分求助啊

P1055 [NOIP2008 普及组] ISBN 号码

NH4HCO3 @ 2022-09-24 19:02:59

自我测试是对的,结果只有50分

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int x,i,j,k=0,l=1,z=0;
    string s,w;
    cin>>s;
    //cout<<s;
    while(s[k]!='\0'){
        if(l==10){
            break;
        }
        if(s[k]!='-'){
            z=z+(s[k]-'0')*l;
            l++;
        }
        k++;
    }
    z=z%11;
    if(z==s[k+1]-'0'){
        cout<<"Right";
    }
    else{
        s[k+1]=z+'0';
        cout<<s;
    }
    //cout<<s[k+1];
    return 0;
}

by CCK_demon @ 2022-09-24 20:53:46


#include <bits/stdc++.h>
using namespace std;
int main(void)
{
    char a[14],mod[12]="0123456789X";//先将对11取余后的十一个字符存入数组
    gets(a);//输入字符串
    int j=1,t=0;
    for(int i=0;i<12;i++)
    {
        if(a[i] == '-')//字符串为分隔符'-'时跳过此次循环
        {
            continue;
        }
        t=t+(a[i]-'0')*j++; //t储存第j个数字*j的和
    }
    if(mod[t%11]==a[12])
    {
        cout<<"Right";
    }
    else
    {
        a[12]=mod[t%11];//若识别码错误,则赋正确的识别码,然后输出
        puts(a);//换行
    }
    return 0;
}

|