20210807网易互娱笔试题

仅仅做出来了一道题,
题目一:查找符合规范的身份证号的数量有多少。
给出了身份证号的校验算法,我从网上搜到了效验规则,如下图

题目是身份证号第15-17位可能看不清了,可能一位看不清,也可能两位三位。问:符合校验规则的身份证号有多少种可能。

另外问一下有人知道网易互娱多少分能合格吗?

mark一下自己的代码,虽然感觉写的一般。

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;

unordered_map<char, int> cimp = {
    {'1', 0},
    {'0', 1},
    {'X', 2},
    {'9', 3},
    {'8', 4},
    {'7', 5},
    {'6', 6},
    {'5', 7},
    {'4', 8},
    {'3', 9},
    {'2', 10}
};

int findnum (int& sum_, int& modNum_, vector<int>& param_) {
    int ans = 0;
    int n = param_.size();
    int maxNum = 0;
    if (n == 1) maxNum = 9;
    else if (n == 2) maxNum = 99;
    else if (n == 3) maxNum = 999;
    else return 0;
    int sumBak = sum_;
    for (int i = 0; i <= maxNum; ++i) {
        int k = i;
        int sumBak = sum_;
        for (int j = n - 1; j >= 0; --j) {
            sumBak += param_[j] * (k % 10);
            k /= 10;
        }
        if ((sumBak % 11) == modNum_) ans++;
    }
    return ans;
}


int main() {
    int n;
    array<int, 17> param = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
    cin >> n;
    
    if (n == 0) return 0;
    vector<string> input;
    for (int i = 0; i < n; ++i) {
        string id;
        cin >> id;
        input.push_back(id);
    }
    int sum = 0;
    int modNum = 0;
    vector<int> paramVec;
    for (int i = 0; i < n; ++i) {
        string in = input[i];
        sum = 0;
        paramVec.clear();
        for (int j = 0; j < 17; ++j) {
            if (isdigit(in[j])) {
                int temp = param[j] * (in[j] - '0');
                sum += temp;
            } else {
                paramVec.push_back(param[j]);
            }
        }
        char c = in[17];
        modNum = cimp[c];
        int ans = 0;
        ans = findnum (sum, modNum, paramVec);
        cout << ans << endl;
    }
    return 0;
}




#网易互娱笔试##网易互娱##笔试题目#
全部评论
谢谢楼主,学习一下。
点赞
送花
回复 分享
发布于 2021-08-07 22:33
楼主已经很厉害,加油
点赞
送花
回复 分享
发布于 2021-08-10 17:11
秋招专场
校招火热招聘中
官网直投

相关推荐

运营老司机王学长:下载一个bo***一个猎聘,写一个aigc的简历和一个自动驾驶感知的简历(其实这两个简历的区别不会超过10%),然后分开投分开面试就好了,选择哪个可以等你拿到offer再决定,现在可以选择两个都要。 内容对你有帮助的话请帮我点三个小红花
点赞 评论 收藏
分享
1.关键字static的作用是什么2.关键字const是什么含意?3.const和宏定义的区别4.关键字volatile有什么含意&nbsp;并给出三个不同的例子。5.引用和指针有什么区别6..h头文件中的ifndef/define/endif&nbsp;的作用?7.描述实时系统的基本特性8.全局变量和局部变量的区别9.全局变量和静态全局变量的区别10.static函数与普通函数11.什么是平衡二叉树?12.堆栈溢出一般是由什么原因导致的?13.什么函数不能声明为虚函数?14.不能做switch()的参数类型15.程序的内存分配16.堆与栈的区别17.描述内存分配方式以及它们的区别18.malloc和new的区别是什么?19.进程与线程的区别20.多进程和多线程的区别21.什么是预编译,何时需要预编译22.三种基本的数据模型23.简述数组与指针的区别?24.位操作25.访问固定的内存位置(Accessing&nbsp;fixed&nbsp;memory&nbsp;locations)26.中断与异常的区别27.变量的定义总结28.为什么要使用宏,宏有什么优缺点?29.内联函数及与宏的区别30.MCU启动过程31.Arm体系结构32.什么是嵌入式?33.进程与线程中的通信方式34.如何将PC上的程序移植到嵌入式系统上,需要注意些什么?35.设计一种通信方式,从一台主机向另外一台主机传递数据,那么应该怎么选择。36.FreeRTOS之全配置项详解、裁剪(FreeRTOSConfig.h)37.DMA为什么能提高效率?38.优先级反转以及解决方法39.信号量及信号量与自旋锁的区别40.strcpy和strncpy的缺陷答案收录到专栏中,集合上千篇面经知识汇总面经&nbsp;&nbsp;c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看40道真题和解析
点赞 评论 收藏
分享
1 11 评论
分享
牛客网
牛客企业服务