226 日 , 2025 22:43:40
身份证校验位并非简单加权求和取模
#include <iostream>
using namespace std;
int main(){
    long long id=33052200021128;
    //校验码对照表
    const char check_code[11]={'1','0','X','9','8','7','6','5','4','3','2'};
    for(int i=0;i<10;++i){
        for(int j=0;j<10;++j){
            for(int k=0;k<10;k+=2){
                cout << id << i << j << k;
                int sum = 195+i*8+j*4+k*2;
                int remainder = sum%11;
                cout << check_code[remainder] << endl;
            }
        }
   }
}

关键修正点:

校验码映射表:使用国家标准《GB 11643-1999》的校验码对照表 check_code,余数对应关系为:

余数: 0 1 2 3 4 5 6 7 8 9 10
校验码:1 0 X 9 8 7 6 5 4 3 2

 

中国的18位身份证号码每一位的含义如下,按照从左到右的顺序:

  1. 地址码(第1-6位)​
    • 第1-2位:省级行政区代码(如北京11、上海31)。
    • 第3-4位:地级市/区代码。
    • 第5-6位:县/县级市/区代码。
    • 例如:110105表示北京市朝阳区。
  2. 出生日期码(第7-14位)​
    • 第7-10位:出生年份(4位,如1990)。
    • 第11-12位:出生月份(2位,01-12)。
    • 第13-14位:出生日期(2位,01-31)。
    • 例如:19900520表示1990年5月20日。
  3. 顺序码(第15-17位)​
    • 第15-16位:同一地址区域内同一天出生人员的顺序编号。
    • 第17位:性别标识码,奇数代表男性,偶数代表女性
    • 例如:017中的7(奇数)表示男性。
  4. 校验码(第18位)​
    • 由前17位通过特定算法(ISO 7064标准)计算得出,范围是0-9XX代表数字10)。
    • 用于验证身份证号码的合法性。

示例解析

以身份证号 110105199005200717X 为例:

  • 110105:北京市朝阳区
  • 19900520:1990年5月20日出生
  • 071:顺序码,第17位1(奇数)表示男性
  • X:校验码

注意事项

  • 旧版身份证为15位(出生年份仅2位,无校验码),新版扩充为18位。
  • 校验码计算较复杂,可通过在线工具验证。
109 日 , 2025 16:49:45
1110 日 , 2024 22:37:33
微软唯一的问题是没品位

The only problem with Microsoft is they just have no taste.

—— Steve Jobs

微软到底是怎么做产品的?因为看中了 Onedrive 和 Onenote 的全平台,开通了 Office365,但是现在觉得实在是难用,遇到了包括但不限于以下几个问题:

1. 手机 Onedrive 作为云相册使用,经常出现相册内容上传了一部分,另一部分没有上传的情况,还有一种情况是同一张照片上传两三次。

2. 还是手机 Onedrive,有个功能是 “在子文件夹中整理备份新备份项”,按照我的理解就是手机的相册上传到 Onedrive 的相册文件夹中去,手机的屏幕截图上传到 Onedrive 的屏幕截图文件夹中去;但是 Onedrive 偏不,同一时刻给手机截两次屏,一张截图在 “本机照片 “文件夹中,另一张却出现在” 屏幕截图 “文件夹中。

3. 电脑的 Onedrive 也逆天,有一天我发现我的 Onedrive 里面混进去很多 QQ 表情包,像是 QQ 聊天记录里面的,去电脑上看,不知道什么时候 QQ 和微信的默认聊天记录保存位置变成了 Onedrive 的” 文档 “文件夹内。

4. 我重新把聊天路径改回电脑 C 盘,今天发现,我的 Onenote 笔记不知道为何丢失了一部分,总感觉是 Onedrive 把我笔记给吞没了。