80分求助!

P1055 [NOIP2008 普及组] ISBN 号码

Chinesehyc @ 2021-10-28 20:27:34

把识别码设为char的话,识别码是数字就判断不出来,设为int,X判断不出来

#include<bits/stdc++.h>
using namespace std;
int a,b,c,ans,b1,b2,b3,c1,c2,c3,c4,c5,d1;
char z,d;
int main(){
    cin>>a>>z>>b>>z>>c>>z>>d1;
    if (d1<10) d=d1+48;
    else d='X';
    b1=b/100;
    b2=b/10%10;
    b3=b%10;
    c1=c/10000;
    c2=c/1000%10;
    c3=c/100%10;
    c4=c/10%10;
    c5=c%10;
//cout<<a<<b1<<b2<<b3<<c1<<c2<<c3<<c4<<c5<<endl;
    ans=a+b1*2+b2*3+b3*4+c1*5+c2*6+c3*7+c4*8+c5*9;
//  cout<<ans<<endl;
    ans=ans%11;
//  cout<<ans<<endl;
    if(ans==10){
//      cout<<ans<<endl;
        if(d=='X') cout<<"Right";
        else cout<<a<<z<<b<<z<<c<<z<<'X';
    }
    else if(ans!=10){
        if(d==ans) cout<<"Right";
        else cout<<a<<z<<b<<z<<c<<z<<ans;
    } 
return 0;
}

by _NTT_ @ 2021-10-28 20:29:51

@Chinesehyc 设为 char 是数字将 c - '0'X 的情况直接判就可以了


by 芷陌陌吖 @ 2021-10-28 20:33:23

这一行:

if(d=='X') cout<<"Right";

这是以 char 类型进行判断的;

这一行:

if(d==ans) cout<<"Right";

这是以 int 类型进行判断的;

修改的方法,把输入的 dl 设置为 char ,然后把 d==ans 改为 (d-'0')==ans 就可以了。


by linjiayi1 @ 2021-10-29 13:25:49

试试string吧


|