zoukankan      html  css  js  c++  java
  • 201312-2 ISBN号码

    思路

    暴力解决

    注意事项

    • 数字转字符,字符转数字
    • code=10的时候,是'X'
    #include<bits/stdc++.h>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char *argv[]) {
        char ch[13] = {};
        char tmp;
        int code = 0;
        for(int i = 0; i < 12; i++){
            cin >> tmp;    
            ch[i] = tmp;        
            if(i == 0){
                tmp = (int)(tmp - '0');
                code += tmp;
            }else if(i >= 2 && i <= 4){
                tmp = (int)(tmp - '0');
                code += tmp * i;
            }else if(i >= 6 && i<= 10){
                tmp = (int)(tmp - '0');
                code += tmp * (i-1);
            }
            code %= 11;    
        }
        cin >> tmp;
        // 第一次忘记判断该条件,导致的得不了满分 
        if(tmp == 'X' && code == 10){
            cout << "Right" << endl;
        }else{
            tmp = (int)(tmp - '0');    
            if(tmp == code){
                cout << "Right" << endl;
            }else{            
                if(code == 10){
                    ch[12] = 'X';
                }else{
                    // 数字转字符 
                    char cha;
                    stringstream s;
                    s << code;
                    s >> cha;    
                    ch[12] = cha;    
                }        
                int i = 0;
                while(i < 13){
                    cout << ch[i++];            
                }
            }
        }    
        return 0;
    }

    一个简单的写法,参考csdn的小哥哥

    思路

    • 用数组给数字和字符做了一个映射
    • gets和puts的用法
     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++; //t储存 第j个  数字  * j 的和
      }
      if(mod[t%11] == a[12]) printf("Right");
      else {
          a[12] = mod[t%11]; //若识别码错误,则赋正确的识别码,然后输出
          puts(a);
      }
      return;
    ————————————————
    版权声明:本文为CSDN博主「ZHUO_SIR」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ZHUO_SIR/java/article/details/86628401
  • 相关阅读:
    【NOI2000T4】单词查找树-trie树
    【POJ1698】Alice's Chance-二分图多重匹配
    【POJ1698】Alice's Chance-二分图多重匹配
    【POJ3159】Candies-差分约束系统
    【POJ3159】Candies-差分约束系统
    【POJ2914】Minimum Cut-无向图的全局最小割
    【POJ2914】Minimum Cut-无向图的全局最小割
    【HDU3555】Bomb-数位DP入门题
    【HDU3555】Bomb-数位DP入门题
    codevs 2018 反病毒软件
  • 原文地址:https://www.cnblogs.com/YC-L/p/13166560.html
Copyright © 2011-2022 走看看