假设美团的工号是由18位数字组成的,由以下规则组成: · 前面6位代表是哪个部门 · 7-14位代表是出生日期,范围是1900.01.01-2023.12.31 · 15-17位代表是哪个组,不能是完全一样的3位数字 · 18位是一位的校验和,假设是 x ,则需要满足 (x+a_1+a_2+a_3+a_4+...+a_17) mod 8 = 1 , a_1-a_17 代表了前面的17位数字 现在需要写一份代码,判断输入的工号是否符合对应的规则。 提示:出生日期这里需要判断闰年。闰年判断的条件是能被 4 整除, 但不能被 100 整除;或能被 400 整除。
第一行输入一个整数 n(1 ≤ n ≤ 10) 接下来 n 行,每行输入一个字符串,表示一个合法的部门。如果工号不属于合法部门的话,则认为这个工号不符合规则。 接下来输入一个整数 m(1 ≤ m ≤ 10) 接下来 m 行,每行输入一个字符串,表示需要验证的工号。
如果不满足上述任一个规则,输出 "error" ,都满足的话输出 "ok"
2 123456 123457 1 123456202312120636
ok
1 123455 1 123456202312120633
error
1 123456 2 123456202313120633 123456202302290633
error error
考点:模拟
数据规模 n ≤ 10 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:模拟
本题切入点
按四条规则逐项校验工号:部门在合法列表内、日期合法(含闰年判断)、第 15-17 位不全相同、校验和满足 (sum+x) mod 8 == 1。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1:输入 1 / 123455 / 1 / 123456202312120633 → 输出 error
部门号不对
样例 2:输入 1 / 123456 / 2 / 123456202313120633 / 123456202302290633 → 输出 error / error
出生日期不对
2023不是闰年,没有29号
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年春招-美团-测试岗-第一批笔试。