zoukankan      html  css  js  c++  java
  • 入门模拟——(字符串处理)B1031查验身份证

    #include <bits/stdc++.h>
    #include<math.h>
    using namespace std;
    const int MAX_LEN = 100005;
    //const int MAX_D = 31;
    struct ID{
        char tem[20];
    };
    int main(){
        int n;
        cin>>n;
        ID temp[n];
        int flag[n];
        for(int i =0;i<n;++i){
            flag[i] = 1;
        }
        for(int i =0;i<n;++i){
            cin>>temp[i].tem; 
        }
        int result[n];
        for(int i = 0;i<n;++i){
            for(int j =0;j<17;++j){
                if(!((temp[i].tem[j]-'0')>=0 &&(temp[i].tem[j]-'0')<=9)){
                    flag[i] = false;
                    break;
                }
            }
        }
        for(int i =0;i<n;++i){
            if(flag[i] == true){
                result[i] = ((temp[i].tem[0]-'0')*7 + (temp[i].tem[1]-'0')*9 + (temp[i].tem[2]-'0')*10 + (temp[i].tem[3]-'0')*5 +
                (temp[i].tem[4]-'0')*8 + (temp[i].tem[5]-'0')*4 + (temp[i].tem[6]-'0')*2 + (temp[i].tem[7]-'0')*1 + (temp[i].tem[8]-'0')*6
                + (temp[i].tem[9]-'0')*3 + (temp[i].tem[10]-'0')*7 + (temp[i].tem[11]-'0')*9 + (temp[i].tem[12]-'0')*10 + (temp[i].tem[13]-'0')*5
                + (temp[i].tem[14]-'0')*8 + (temp[i].tem[15]-'0')*4 + (temp[i].tem[16]-'0')*2) % 11;
            }
        }
        int s[11] = {1,0,10,9,8,7,6,5,4,3,2};
        for(int i=0;i<n;++i){
            int fas = result[i];
            int sdf = s[fas];
            if(sdf == 10){
                result[i] = 10;
            }else{
                result[i] = sdf;
            }
        }
        for(int i=0;i<n;++i){
            char c;
            if(result[i] != 10){
                c = ('0' +(result[i]-0));
            }
            else{
                c = 'X';
            }
            if(c != temp[i].tem[17]){
                flag[i] = false; 
            }
        }
        int count = 0;
        for(int i = 0;i<n;++i){
            if(flag[i]==true){
                count++;
            }else{
                for(int j=0;j<18;++j){
                    if(j!=17){
                        cout<<temp[i].tem[j];
                    }else{
                        cout<<temp[i].tem[j]<<endl;
                    }
                }
            }
        }
        if(count == n){
            cout<<"All passed"<<endl;
        }
        system("pause");
        return 0;
    } 

  • 相关阅读:
    NYOJ926(概率)
    无根树转有根树
    Codeforces Round #304 C(Div. 2)(模拟)
    hdu5878(枚举,打表)
    求一个矩阵的逆矩阵(用伴随矩阵求)
    求n阶方阵的值(递归)
    setw()函数
    快速幂计算(整数快速幂/矩阵快速幂)
    全文检索
    发送邮件
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/12130996.html
Copyright © 2011-2022 走看看