news 2026/2/27 10:46:55

华为OD机试真题2025双机位C卷 C语言 实现【挑选宝石】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题2025双机位C卷 C语言 实现【挑选宝石】

挑选宝石

2025华为OD机试双机位B卷 - 华为OD上机考试双机位B卷 100分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

题目描述

游乐园有一款互动游戏,游戏开始时会提供n个宝石,每个宝石都一个属性值a1,a2,…an.玩家在游戏前可以挑选x颗宝石,将这些宝石的属性值相乘组成玩家的属性值。游戏玩家需要y点属性值,请帮助游戏玩家计算有多少种计算方式。

输入描述

第一行:三个整数n,x,y

  • 第一个整数n(0 < n <20)表示宝石总数量。
  • 第二个整数x(0<x <=n),表示可以选择宝石个数
  • 第三个整数y,表示通过游戏需要的属性值

第二行:n个整数,a1,a2,…an(-100 < ai < 100),表示每个宝石的属性值。

输出描述

输出一个整数,表示玩家可以通过游戏的挑选方式的数量。

用例1

输入

4 2 8 2 -3 4 5

输出

3

题解

思路:二进制枚举

  1. n < 20数据量对应2^20比较小,可以采用二进制暴力枚举判断。
  2. 二进制枚举的规则:如果一个20位的二进制数,二进制为1的位置代表会选择对应宝石,例如101表示会选中第1和第3个宝石
  3. 枚举范围为[1, 2 ^ n -1], 对于每个枚举值先求出所有二进制为1的位置用数组position保存
    • 首先判断position的数量是否等于x,不等于直接跳过。
    • 将所有宝石的值进行相乘然后判断是否大于y,大于y的话直接结果+1。这里a的值范围比较大,非python用户尽量使用大的数据类型进行保存,防止溢出
  4. 输出结果。

c语言

#include <stdio.h> int main() { int n, x; long long y; scanf("%d %d %lld", &n, &x, &y); int ans[25]; // 假设 n 不会太大(<=20 很常见) for (int i = 0; i < n; i++) { scanf("%d", &ans[i]); } int res = 0; // 枚举所有非空子集 for (int mask = 1; mask < (1 << n); mask++) { int cnt = 0; // 已选元素个数 long long product = 1; // 当前乘积 for (int i = 0; i < n; i++) { // 判断第 i 位是否被选中 if (mask & (1 << i)) { cnt++; // 超过 x 个,直接剪枝 if (cnt > x) { break; } product *= ans[i]; } } // 必须刚好选 x 个 if (cnt == x && product >= y) { res++; } } printf("%d\n", res); return 0; }

相关链接

本题包含其它多语言实现,可以点击跳转实现:华为OD机试双机位C卷 - 挑选宝石 (C++ & Python & JAVA & JS & GO)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 4:07:28

10万奖金,58人晋级!这场3D打印大赛谁将脱颖而出?

2025年12月19日&#xff0c;创想三维公布了其于9月底启动的“玩转K2系列”创作大赛第一轮评选结果。活动共收到192位用户提交的284件参赛作品&#xff0c;经过大众投票&#xff0c;最终有58位参赛者成功晋级。 第二轮专业评审将于12月20日至12月28日进行&#xff0c;最终获奖名…

作者头像 李华
网站建设 2026/2/25 23:27:53

论文搜索途径及高效文献检索方法探讨

一、wispaper 入口在这&#x1f449;https://www.wispaper.ai/ 追踪自己研究方向的前沿&#xff0c;其实是搞科研关键的技能之一 问题是&#xff0c;每天手动去检索新论文太麻烦&#xff01;看《Nature》《Science》这种综合期刊又太杂&#xff0c;想找对口内容很难&#xf…

作者头像 李华
网站建设 2026/2/25 18:20:15

springboot基于web在线医疗预约与咨询平台

SpringBoot基于Web的在线医疗预约与咨询平台介绍 一、平台开发背景与核心目标 随着互联网技术的普及和医疗需求的增长&#xff0c;传统就医模式面临排队时间长、流程繁琐、资源分配不均等问题。基于SpringBoot与Web技术的在线医疗预约与咨询平台应运而生&#xff0c;旨在实现以…

作者头像 李华
网站建设 2026/2/17 23:16:33

基于SpringBoot的勤工助学系统的介绍

一、系统目标 基于 SpringBoot 的勤工助学系统&#xff0c;旨在解决高校勤工助学管理中岗位发布分散、申请流程繁琐、考勤考核低效、薪资发放不透明等问题。通过构建 “岗位管理 - 申请录用 - 考勤考核 - 薪资结算” 的全流程数字化平台&#xff0c;实现勤工助学工作的规范化、…

作者头像 李华
网站建设 2026/2/27 8:35:59

数字孪生与AutoGLM融合难题,90%工程师忽略的3个关键控制节点

第一章&#xff1a;Open-AutoGLM 数字孪生联动控制Open-AutoGLM 是一个面向工业自动化场景的开源框架&#xff0c;结合大语言模型与数字孪生技术&#xff0c;实现对物理设备的智能感知、分析与闭环控制。该系统通过构建高保真的虚拟模型&#xff0c;实时同步产线设备运行状态&a…

作者头像 李华
网站建设 2026/2/26 12:30:57

SpringBoot + MQTT 如何实现取货就走的智能售货柜系统

昨天在办公楼底下&#xff0c;我用了一下那种开门拿货&#xff0c;关门自动扣费的智能售货柜&#xff0c;真挺方便的。其实这种售货柜并不少见&#xff0c;很多无人售货店、地铁站和景区都能经常看懂。那这种流程是怎么实现的呢&#xff1f;下面我们来分析一下整个实现的流程。…

作者头像 李华