• 洛谷 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;
    }
    
  • 相关阅读:
    使用Kafka Connect导入/导出数据
    FastDFS :java.lang.Exception: getStoreStorage fail, errno code: 28
    Zookeeper+Kafka集群测试
    zookeeper,kafka错误
    kafka systemctl开机启动
    zookeeper systemctl开机启动
    kafka 集群安装
    kafka升级官方指导及注意事项
    centos7.7 添加nginx服务
    教你如何迅速秒杀掉:99%的海量数据处理面试题
  • 原文地址:https://www.cnblogs.com/Fhr2001/p/12032777.html
Copyright © 2020-2023  润新知