洛谷 P1055 ISBN号码 题解

P1055 ISBN号码

题目


Main Idea:

    按照题目提示判断输入的ISBN号码中识别码是否正确。

Summary:

    1.同一条判断语句中,已执行的部分若有自增自减,则下一次自增自减是在前面已经自增自减的基础上进行的 

Problem Solving Idea:

    模拟题意。

AC代码:

#include<bits/stdc++.h>
using namespace std;
char a[15];
int main()
{
    int mark1=0,mark2=0,mod=0,flag=1;
    memset(a,'\0',sizeof(a));
    scanf("%s",a);
    for(int i=0;i<13;i++){
        if(a[i]>=48&&a[i]<=57&&mark2<3){
            mod+=(++mark1)*(a[i]-'0');
        }
        else if(a[i]=='-')  mark2++;
        if(mark2==3&&((mod%11==(a[++i]-'0'))||(mod%11==10&&a[12]=='X'))){//这里深坑。。。同一条判断语句中,已执行的部分若有自增自减,则下一次自增自减是在前面已经自增自减的基础上进行的 
                flag=1;
                break;
        }
        if(mark2==3&&((mod%11!=(a[++i]-'0')&&mod%11!=10)||mod%11==10&&a[12]!='X')){
            flag=0;
            break;
        }
    }
    if(flag)    cout<<"Right";
    else{
        for(int i=0;i<12;i++)   cout<<a[i];
        if(mod%11==10)  cout<<'X';
        else cout<<mod%11;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Fhr2001/p/12032777.html
今日推荐