萌新求助!1055为什么不过

P1055 [NOIP2008 普及组] ISBN 号码

ClashCalling @ 2023-09-26 21:35:24

#include <bits/stdc++.h>
using namespace std;
string pove(string a){
    int c[14];
    int m=0;
    for(int i=0;i<13;i++){
        if(a[i]!='-'){
            c[i]=int(a[i])-48;
        }else{c[i]=-1;}
    }
    int b;
    for(int i=0;i<11;i++){
        if(c[i]!=-1){
            b++;
            m+=c[i]*(b);
        }
    }
    if(m%11==c[12]){
        return "Right";
    }
    return a;
}
int main() {
    string s;
    cin >> s;
    cout<<pove(s);
    return 0;
}

为什么过不了,蒟蒻第一做普及-,求助,输出我这边看来都对,但是全红wa。


by Crab_Tang @ 2023-09-26 21:42:33

@cyzyyds122 我看看,请稍等


by Crab_Tang @ 2023-09-26 21:46:34

@cyzyyds122 你是不是忘了样例2了啊?


by Crab_Tang @ 2023-09-26 21:48:20

@cyzyyds122 样例2你的会错,原因是你没有输出正确的ISBN 号码。


by Crab_Tang @ 2023-09-26 21:49:04

@cyzyyds122 具体就是pove函数最后一行处理一下就行了


by Crab_Tang @ 2023-09-26 21:50:09

@cyzyyds122

奉上本蒟蒻的代码

#include<bits/stdc++.h>
using namespace std;
string a;
int main(){
    cin>>a;
    int sum=0,j=0;
    for(int i=0;i<a.length()-1;i++)//计算到倒数第二位
        if(a[i]>='0'&&a[i]<='9')
            sum+=(a[i]-'0')*(++j);
    if(sum%11==10){
        if(a[a.length()-1]=='X'){printf("Right");return 0;}
        else{
            a.pop_back();cout<<a;
            cout<<'X';
            return 0;
        }
    }
    if(a[a.length()-1]-'0'==(sum%11)){printf("Right");return 0;}
    else {
        a.pop_back();cout<<a;
        cout<<sum%11;
    }
    return 0;
}

嘤嘤嘤,别抄,参考一下


by CooooldWind_ @ 2023-09-26 21:57:13

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

int sum = 1,add,last,total;
char memory[11];

int main(){
    while(sum <= 10){
        char ch;
        cin >> ch;
        if(sum <= 9) memory[total++] = ch;
        if(ch != '-'){
            if(sum <= 9) add = add + (ch - '0') * sum;
            else{
                if(ch != 'X') last = ch - '0';
                else last = 10;
            }
            sum++;
        }
    }
    if(last == add % 11) cout << "Right";
    else{
        for(int i = 0;i < 11;i++) cout << memory[i];
        cout << '-';
        if(add % 11 == 10) cout << 'X';
        else cout << add % 11;
    }
}

by ClashCalling @ 2023-09-27 19:10:16

@Robots75 感谢大佬 我写代码的时候做错了,以为是原样输出。。。


|