【最新华为OD机试E卷】喊7的次数重排(100分)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员
💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历
✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解
🧩 大部分包含
Python
/C
/Javascript
/Java
/Cpp
多语言代码👏 感谢大家的订阅➕ 和 喜欢💗 和手里的小花花🌸
最新华为OD机试E卷全、新、准,题目覆盖率达 95% 以上,其中D卷题目全部支持在线评测,E卷题目正在持续上线中~
最新华为OD机试专栏: https://www.nowcoder.com/creation/manager/columnDetail/MgbyJj
🎀关于华为OD
- ✨华为OD的概念 华为的大部分社会招聘采用了被称为OD(Outsourcing Dispatch)模式,这是一种与德科共同进行的招聘方式。在这种模式下,被招聘的员工通常被定级在13至17级,这些员工被视为华为的储备人才。华为每年会从这些OD项目中选拔表现出色的员工,并将他们转为正式员工。
- ⌚️华为 OD 应聘流程
-
第一步:投递简历
- 提供姓名、邮箱、手机号、身份证号,用于锁定,所以投递前需要考虑清楚,投到项目组之后,一般不会转给另一个项目的 HR 了,也就是被锁定。
-
第二步:机试
- 3 道算法题,400 分满分,一般 1 个月的准备时间,华为机试必须要 150 分以上,没有过半年之后才能参加下一次考试。
-
第三步:技术面
- 2 轮技术面试。
-
第四步:HR 与主管面试
-
第五步:录用,发 offer
-
🍓OJ题目截图
7️⃣ 喊7的次数重排
问题描述
喊7是一个传统的聚会游戏。 个人围成一圈,按顺时针从 1 到 编号。游戏规则如下:
- 编号为 1 的人从 1 开始喊数。
- 下一个人喊的数字为上一个人的数字加 1。
- 当将要喊出来的数字是 7 的倍数或者数字本身含有 7 时,不能直接喊出这个数字,而是要喊"过"。
- 假定所有人都没有失误地在正确的时机喊了"过"。
现在,给定一个长度为 的数组,存储了打乱顺序的每个人喊"过"的次数。你的任务是将它还原成正确的顺序,即数组的第 个元素应存储编号 的人喊"过"的次数。
输入格式
输入为一行,包含空格分隔的喊"过"的次数。数字的个数即为 。
输出格式
输出为一行,包含顺序正确的喊"过"的次数,用空格分隔。
样例输入1
0 1 0
样例输出1
1 0 0
样例输入2
0 0 0 2 1
样例输出2
0 2 0 1 0
样例解释
样例1 | 一共只有一次喊"过",那只会发生在需要喊 7 时。按顺序,编号为 1 的人会遇到 7,故输出 1 0 0。注意:结束时的 不一定是 7,也可以是 8、9 等,喊过的次数都是 1 0 0。 |
样例2 | 一共有三次喊"过",发生在 7、14、17。按顺序,编号为 2 的人会遇到 7 和 17,编号为 4 的人会遇到 14,故输出 0 2 0 1 0。 |
数据范围
题解
这道题目的核心在于模拟喊7游戏的过程,并记录每个人喊"过"的次数。
解题思路如下:
- 首先,我们需要计算出总共喊"过"的次数,即输入数组的和。
- 然后,我们从 1 开始模拟喊数的过程,直到喊"过"的次数达到总数。
- 在模拟过程中,我们需要判断当前数字是否需要喊"过"(是 7 的倍数或含有 7)。
- 如果需要喊"过",我们就给当前玩家的计数器加 1。
- 每喊完一个数,我们就移动到下一个玩家,注意要循环到第一个玩家。
参考代码
- Python
# 读取输入并转换为整数列表
a = list(map(int, input().split()))
# 计算总的"过"的次数
s = sum(a)
# 获取玩家数量
n = len(a)
# 初始化结果列表,用于存储每个玩家喊"过"的次数
p = [0] * n
# 初始化当前数字和当前玩家索引
i = 1 # 从1开始喊数
j = 0 # 从第一个玩家开始
# 模拟喊数过程
while s > 0:
# 判断当前数字是否需要喊"过"
if i % 7 == 0 or '7' in str(i):
s -= 1 # 减少剩余的"过"的次数
p[j] += 1 # 当前玩家喊"过"的次数加1
i += 1 # 数字加1
j = (j + 1) % n # 移动到下一个玩家,使用模运算实现循环
# 输出结果,将整数列表转换为字符串并用空格连接
print(' '.join(map(str, p)))
- C
#include <stdio.h>
#include <string.h>
// 判断一个数字是否包含7
int contains7(int num) {
while (num > 0) {
if (num % 10 == 7) return 1;
num /
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
最新华为OD机试-E+D卷 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD-E/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 部分题目提供OJ在线评测