当前位置: 首页 > news >正文

华为OD机试真题2026双机位C卷 PythonJS 实现【用户入网定期复评】

目录

题目

思路

Code


题目

用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:
等级1每36个月重评一次。
等级2每12个月重评一次。
等级3每8月重评一次。
等级4每6个月重评一次。
等级5每3个月重评一次。
每个月固定按照30天计算下次日期,即每3个月对应下次日期为90天后,其它同理。
如果上次评级时间和本次任务时间差,超过了该等级应该重评的时间,说明上次漏评,那么该等级自动评级提升1等级,按照新的等级计算下次一定重评时间,最高为等级5.
输入描述
输入共m+1行,每行信息如下:
1.第一行为m和task_date,中间以空格分割,m表示全量用户数,task_date表示本次评级任务启动时间。

2.第2行到m+1行为m个用户信息,按顺序每个用户的信息格式为name(用户姓名),last rating-time(上次评级的时间,整数,表示从2000年1月1日起的天数),score(用户上一次的评分),以空格分割。
3.name为仅小写字母组成的字符串,字符串长度范围为[1-500]
输出描述
输出当前任务时间与上次复评时间小于等于5天的评级用户,逗号分割输出。
1.按照复评时间升序排序
2.用户复评时间一致按照姓名升序排序。

示例1

输入

1 100
zhangsan 8 87

输出

zhangsan

思路

虽然题目比较长,描述比较多,但是确实是个简单的逻辑模拟类题目。

  1. 根据评分算出等级(每20分一档,80-100归为等级5)
  2. 用等级查表得到重评周期(等级1=1080天,等级5=90天),算出下次复评时间 = 上次时间 + 周期
  3. 如果任务时间已超过复评时间(漏评),等级自动+1(上限5),用新等级重新算复评时间
  4. 筛选出复评时间与任务时间差 ≤ 5天的用户,按复评时间升序、同时间按姓名升序输出

Code

import sys def solve(): lines = [] for line in sys.stdin: lines.append(line.strip()) # 解析第一行:用户数 m 和任务日期 task_date first = lines[0].split() m = int(first[0]) task_date = int(first[1]) # 各等级对应的重评周期(天),等级1~5 period = {1: 36*30, 2: 12*30, 3: 8*30, 4: 6*30, 5: 3*30} result = [] for i in range(1, m + 1): parts = lines[i].split() name = parts[0] last_time = int(parts[1]) score = int(parts[2]) # 根据评分计算等级:1-19→1, 20-39→2, 40-59→3, 60-79→4, 80-100→5 if score <= 19: level = 1 elif score <= 39: level = 2 elif score <= 59: level = 3 elif score <= 79: level = 4 else: level = 5 # 计算应复评时间 next_time = last_time + period[level] # 如果任务时间已超过应复评时间,说明漏评,等级提升1级 if task_date > next_time: level = min(level + 1, 5) next_time = last_time + period[level] # 筛选:复评时间与任务时间的差的绝对值 <= 5天 if abs(next_time - task_date) <= 5: result.append((next_time, name)) # 按复评时间升序,时间相同按姓名升序 result.sort() # 逗号分隔输出 print(",".join(item[1] for item in result)) solve()

JS

const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin }); const lines = []; rl.on('line', line => lines.push(line.trim())); rl.on('close', () => { // 解析第一行:用户数 m 和任务日期 task_date const first = lines[0].split(' '); const m = parseInt(first[0]); const taskDate = parseInt(first[1]); // 各等级对应的重评周期(天),等级1~5 const period = [0, 36*30, 12*30, 8*30, 6*30, 3*30]; const result = []; // 存 {nextTime, name} for (let i = 1; i <= m; i++) { const parts = lines[i].split(' '); const name = parts[0]; const lastTime = parseInt(parts[1]); const score = parseInt(parts[2]); // 根据评分计算等级:1-19→1, 20-39→2, 40-59→3, 60-79→4, 80-100→5 let level; if (score <= 19) level = 1; else if (score <= 39) level = 2; else if (score <= 59) level = 3; else if (score <= 79) level = 4; else level = 5; // 计算应复评时间 let nextTime = lastTime + period[level]; // 如果任务时间已超过应复评时间,说明漏评,等级提升1级 if (taskDate > nextTime) { level = Math.min(level + 1, 5); nextTime = lastTime + period[level]; } // 筛选:复评时间与任务时间的差的绝对值 <= 5天 if (Math.abs(nextTime - taskDate) <= 5) { result.push({ nextTime, name }); } } // 按复评时间升序,时间相同按姓名升序 result.sort((a, b) => { if (a.nextTime !== b.nextTime) return a.nextTime - b.nextTime; return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; }); // 逗号分隔输出 console.log(result.map(r => r.name).join(',')); });

【华为od机试真题Python+JS+Java+Go合集】【超值优惠】:Py/JS/Java/Go合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java&Go】:Java&Go真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群:830285880】【文章底部有二维码链接,可扫码加交流群】

华为OD机试:二本院校有机会吗?
有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

http://www.cnnetsun.cn/news/1496735.html

相关文章:

  • 告别眼部疲劳:让文献阅读更舒适的开源方案
  • 终极星露谷物语模组合集:让你的农场生活效率提升300%
  • python中带参数的装饰器的使用方法及应用场景
  • 收藏 | AI Agent 开发核心概念解析:从 LLM 到 Sub-agents,小白也能轻松入门
  • GLM库的ortho函数详解:从参数含义到矩阵运算可视化调试技巧
  • Grok-1开源项目实战指南:从环境搭建到性能优化的全方位解决方案
  • ViGEmBus虚拟手柄驱动:5个简单步骤实现专业级游戏控制体验
  • 跨平台实战:在QT Creator中一站式配置GStreamer开发环境
  • CTP期权操作实战指南:从查询到行权的完整流程
  • ROS机器人实战:修改LIO-SAM源码,一键保存TUM格式轨迹与点云地图
  • 从零到一:BepInEx游戏模组框架完全指南
  • 信奥赛C++提高组csp-s之组合数学专题课:第二类斯特林数
  • RabbitMQ 3.13.2安装踩坑实录:如何绕过rabbitmq-service.bat install code 1错误
  • 告别Windows依赖!用.NET 6+GTK轻松实现WinForm跨平台开发(Linux/Mac实战)
  • Grok-1开源项目实战指南:从零开始运行3140亿参数AI大模型
  • 3步解锁浏览器自动化革命:n8n-nodes-puppeteer让网页操作告别手动时代
  • 智能家居避坑指南:Arduino光敏电阻+继电器控制实战(LCD1602显示调试技巧)
  • Termius vs SecureCRT:为什么这款内置FTP的SSH工具更适合中文用户?
  • 保姆级教程:在Windows 11上搞定Webots R2022a与MATLAB R2022a的联合仿真环境配置
  • 离线环境解决方案:OpenClaw+GLM-4.7-Flash在内网科研机构的应用
  • 利用CSS动画打造动态语音发送波纹效果
  • 文科生也能玩转的AI自动化:我是如何用魔搭MCP和CherryStudio让Python代码自己发小红书的
  • 实战避坑指南:Cobalt Strike Beacon内存特征修改全流程(附Profile配置文件)
  • 别再只用M法了!手把手教你用Arduino和旋转编码器实现M/T法测速(附代码)
  • Synology Photos CPU驱动人脸识别补丁:解锁旧设备AI相册的终极方案
  • V8引擎源码魔改-彻底绕过无限debugger的终极方案
  • C语言结构体传参:从内存布局图看懂值传递、指针传递的底层差异(附VS调试技巧)
  • Fillinger终极指南:3分钟掌握Illustrator智能填充技巧
  • 新手必看!PADS Layout覆铜网格显示问题的5分钟快速修复指南
  • 基于Python的个人驾校预约管理系统毕业设计源码