怎么个全红

P1055 [NOIP2008 普及组] ISBN 号码

hechuan_bibe @ 2024-10-17 11:59:46

#include<stdio.h>
#include<string.h>
int main()
{
    char arr[14];
    int sum = 0;
    scanf("%s", arr,sizeof(arr));
    int j = 1;
    for (int i = 0; i < 13; i++)
    {
            if (arr[i] != '-')
            {
                sum += (arr[i]-'0') * j;
                j++;
            }
    }
    sum %= 11;
    if (sum == 10)
    {
        sum = 'X';
    }
    // 比较校验位
    if (arr[12] == sum) // arr[12] 是最后一个字符
    { 
        printf("Right\n");
    }
    else
    {
        // 输出格式
        for (int i = 0; i < 12; i++) 
        {
            printf("%c", arr[i]); // 输出前12位
        }
        printf("%d\n", sum); 
    }
    return 0;
}

by wuyusheng @ 2024-10-17 12:24:21

@hechuan_bibe 我写的比你短一点

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[14],c;
    cin>>a;
    int b=0,d=0;
    for(int i=0;i<11;i++)
    {
        if(a[i]!='-')
        {
            d++;
            b+=d*(a[i]-'0');
        }
    }
    b%=11;
    if(b==10) c='X';
    else c=b+'0';
    if(c==a[12]) 
    cout<<"Right"<<endl;
    else
    {
        a[12]=c;
        cout<<a<<endl;
    }
    return 0;
}

by xywuyu @ 2024-10-17 12:26:51

#include<bits/stdc++.h>
using namespace std;
char a[10];
int main()
{long long n,j,e=0;char b,c,d,k,f;
cin>>a[1]>>b>>a[2]>>a[3]>>a[4]>>c>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]>>d>>f;

for (int i=1;i<=9;++i)
{n=i;e+=(a[n]-'0')*n;}
if (e%11==10)
{k='X';
if (k==f)
cout<<"Right";
else cout<<a[1]<<b<<a[2]<<a[3]<<a[4]<<c<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<d<<k;
}
else {j=f-'0';
if (e%11==j)
cout<<"Right";
else cout<<a[1]<<b<<a[2]<<a[3]<<a[4]<<c<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<d<<e%11;
}
return 0;}

by hechuan_bibe @ 2024-10-17 18:04:59

@wuyusheng 谢谢这个我看了,但是b-'0’是什么意思


by wuyusheng @ 2024-10-17 21:31:06

@hechuan_bibe 是把字符转成数字


|