1560 身份证号码

#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main() {
    // 读取输入的字符串
    string s;
    cin >> s;
    
    // 初始化有效性标志为1(有效)
    int f = 1;
    // 定义年、月、日变量
    int y, m, d;
    
    // 从字符串中提取年、月、日信息
    y = (s[6] - '0') * 1000 + (s[7] - '0') * 100 + (s[8] - '0') * 10 + (s[9] - '0');
    m = (s[10] - '0') * 10 + (s[11] - '0');
    d = (s[12] - '0') * 10 + (s[13] - '0');
    
    // 检查月份和日期是否有效
    if (m < 1 || m > 12 || d <= 0) f = 0;
    
    // 判断并验证日期的有效性,根据不同月份的天数规则
    if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
        if (d > 31) f = 0;
    }
    
    if (m == 4 || m == 6 || m == 9 || m == 11) {
        if (d > 30) f = 0;
    }
    
    if (m == 2) {
        // 验证二月的日期,考虑闰年因素
        if (d > 28 + (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)) f = 0;
    }
    
    // 根据有效性标志输出结果或错误信息
    if (f) cout << y << " " << m << " " << d; 
    else cout << "error";
    
    return 0;
}

posted @   行胜于言Ibl  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示