50求助(C++)

P1055 [NOIP2008 普及组] ISBN 号码

shining_array @ 2022-04-23 08:40:09

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;int t;
    getline(cin,a);
    t=((a[0]-48)+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9)%11;
    if(t==a[a.size()-1]-48||(t==10&&a[a.size()-1]=='X'))
    {
        cout<<"Right";
    }
    else
    {
        for(int i=0;i<a.size()-1;i++)
        {
            cout<<a[i];
        }
        cout<<t;
    }
    return 0;
}

by char_cha_ch @ 2022-04-23 08:50:56

直接给代码还是咋地(这道题有点简单,会循环的就行)


by char_cha_ch @ 2022-04-23 08:52:32

不是,你那个t变量最好用循环搞,这道题考循环的,你不拿循环就跟抄的没区别诶(还有10的话,你要输出x(订正的时候))


by nikodo @ 2022-04-30 16:23:08

#include<iostream>
using namespace std;
int main(){
    char c[13]; 
    int i,j,sum;
    char n,n1,n2,ma;
    for(i=0;i<13;i++)
        cin>>c[i];
    sum=0;
    j=1;
    for(i=0;i<12;i++){
        if(c[i]>='0'&&c[i]<='9'){
            sum+=(c[i]-'0')*j;
            j++;
        }
    }
    if(sum%11<10){
        if(sum%11==(c[12]-'0')){
            cout<<"Right"<<endl;
        }else{
            c[12]=sum%11+'0';
            for(i=0;i<13;i++)
                cout<<c[i];
        } 
    }else{
        if(c[12]=='X'){
            cout<<"Right"<<endl;    
        }else{
            c[12]='X';
            for(i=0;i<13;i++)
                cout<<c[i];
        } 
    }
    return 0;
}

超暴力的方法


by shining_array @ 2022-05-07 17:15:55

@kirihara233 谢谢,我已经AC了


by char_cha_ch @ 2022-05-07 17:22:16

@ljz_68 ISBN还挺有趣的


by _5t0_0r2_ @ 2022-06-19 11:50:37

我的也只得了50分。。。

#include<bits/stdc++.h>
using namespace std;
char a[10];
int n = 0;
int main(){
    scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);
    for(int i = 0;i <= 8;i++)
        n += (a[i] - '0') * (i + 1);
    n %= 11;
    if(n == a[9] - '0')
        printf("Right");
    else
        printf("%c-%c%c%c-%c%c%c%c%c-%d",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],n);
    return 0;
}

|