zoukankan      html  css  js  c++  java
  • 洛谷 P1055 ISBN号码 题解

    P1055 ISBN号码

    题目


    Main Idea:

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

    Summary:

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

    Problem Solving Idea:

        模拟题意。
    

    AC代码(version 1):

    #include<bits/stdc++.h>
    using namespace std;
    char a[15];
    int main()
    {
    	int mark1=0,mark2=0,mod=0,flag=1;
    	memset(a,'',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;
    }
    

    AC代码(version 2):

    #include <bits/stdc++.h>
    int main(){
      char a[14], mod[12] = "0123456789X"; //先将mod11后的十一个字符存入数组
      gets(a); //输入字符串
      int i, j = 1, t = 0;
      for(i = 0; i < 12; i++) {
            if(a[i] == '-') continue; 
        t += (a[i]-'0')*j++; 
      }
      if(mod[t%11] == a[12]) printf("Right");
      else {
          a[12] = mod[t%11];
          puts(a);
      }
      return 0;
    }
    
  • 相关阅读:
    以后努力,每天写博客!
    无题
    Fainting
    明天任务
    hdu 4022 Bombing(map)
    codeforces 1216E1 Numerical Sequence (easy version) (前缀和/二分)
    CodeForces 1176E Cover it!
    codeforces 1234D Distinct Characters Queries
    codeforces 1249C2 Good Numbers (hard version)
    codeforces 913B Christmas Spruce(树)
  • 原文地址:https://www.cnblogs.com/Fhr2001/p/12032777.html
Copyright © 2011-2022 走看看