80分求调必关

P1055 [NOIP2008 普及组] ISBN 号码

lizhenghang123AKNOI @ 2024-09-25 20:28:09

蒟蒻的代码:

#include<iostream>
using namespace std;
int cnt,p;
string s,k;
int main(){
    cin>>s;
    for(int i=0;i<s.size()-2;i++){
        if(s[i]>='0'&&s[i]<='9'){
            cnt++;
            p+=(s[i]-'0')*cnt;
        }
    }
    p%=11;
    if(p==10){
        for(int i=0;i<s.size()-1;i++)cout<<s[i];
        cout<<"X";
        return 0;
    }
    if(s[s.size()-1]-'0'!=p){
        for(int i=0;i<s.size()-1;i++)cout<<s[i];
        cout<<p;
    }else cout<<"Right";
    return 0;
}

by lizhenghang123AKNOI @ 2024-09-25 20:31:28

提交记录


by zh_felix @ 2024-09-25 20:52:17

我的AC代码

#include<iostream>
using namespace std;
int cnt=1, p;
char ans;
string s;
int main(){
    cin>>s;
    for(int i=0;i<s.size()-1;i++){
        if(s[i]>='0'&&s[i]<='9'){
            p+=(s[i]-'0')*cnt;
            cnt++;
        }
    }
    p%=11;
    if(p==10) {
        ans='X';
    } else {
        ans=p+'0';
    }
    if(s[s.size()-1]!=ans){
        for(int i=0;i<s.size()-1;i++)cout<<s[i];
        cout<<ans;
    }else cout<<"Right";
    return 0;
}

AC记录\ 如果 p 等于 10 ,并且错误的话,在输出,否则输出 Right


by zh_felix @ 2024-09-25 20:54:18

@lizhenghang123


by qmhn @ 2024-09-26 17:31:54

0-500-00000-X你试试这个测试样例,我的过了的程序运行结果是Right但你的是它本身,简单来说就是X也应该纳入考虑,前面运算结果可能为10@lizhenghang123


by lizhenghang123AKNOI @ 2024-09-26 17:46:47

感谢,已AC


by lizhenghang123AKNOI @ 2024-09-26 17:47:19

@zh_felix 已关


by lizhenghang123AKNOI @ 2024-09-26 17:47:32

@qmhn 已关


|