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

2021 年 9 月青少年软编等考 C 语言五级真题解析

目录

  • T1. 问题求解
    • 思路分析
  • T2. 抓牛
    • 思路分析
  • T3. 交易市场
    • 思路分析
  • T4. 泳池
    • 思路分析

T1. 问题求解

给定一个正整数 N N N,求最小的 M M M 满足比 N N N 大且 M M M N N N 的二进制表示中有相同数目的 1 1 1

举个例子,假如给定 N N N 78 78 78,二进制表示为 100   1110 100\ 1110 100 1110,包含 4 4 4 1 1 1,那么最小的比 N N N 大的并且二进制表示中只包含 4 4 4 1 1 1 的数是 83 83 83,其二进制是 101   0011 101\ 0011 101 0011,因此 83 83 83 就是答案。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入若干行,每行一个数 N   ( 1 ≤ N ≤ 1 0 6 ) N\ (1 ≤ N ≤ 10^6) N (1N106),如果这行为 0 0 0 表示输入结束。
  • 输出
    对于每个 N N N,输出对应的 M M M
  • 样例输入
    1
    2
    3
    4
    78
    0
    
  • 样例输出
    2
    4
    5
    8
    83
    

思路分析

此题考查枚举算法与数位分离,属于入门题。

首先计算出 n n n 的二进制形式中 1 1 1 的个数。然后从 n + 1 n+1 n+1 开始依次枚举,寻找与 n n n 的二进制形式中 1 1 1 的个数相等的第一个数字即可。

/** Name: T1_1.cpp* Problem: 问题求解* Author: Teacher Gao.* Date&Time: 2025/01/08 23:50*/#include <iostream>using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(0);int n;while (cin >> n && n) {int p = n, cnt = 0;while (p) {p &= p - 1;cnt++;}while (1) {p = ++n;int cnt2 = 0;while (p) {p &= p - 1;cnt2++;}if (cnt2 == cnt) {cout << n << "\n";break;}}}return 0;
}

从二进制的角度考虑,要保证比 n n n 大,且二进制形式中 1 1 1 的数量不变,相当于让某一个 1 1 1 向左移动一位。容易想到向左移动的这个 1 1 1 的左边必须是 0 0 0,那么我们可以从最低位 1 1 1 开始向左寻找,当发现某一位是 0 0 0 的时候,将它右边那个 1 1 1 移动过来即可。但是这样仍然不是最小的,我们需要将这一位右边的 1 1 1 全都移动到最低位才能满足最小。观察示例中 78 78 78 83 83 83 的二进制形式,可以更好地理解这一点。

最优策略既然已经分析出来了,那么只要找到那个合适的 1 1 1,答案便是固定的。首先通过 n & -n 可以求出 n n n最低位 1 1 1 的位权,从这一位开始向左寻找第一位 0 0 0,同时统计 1 1

http://www.lryc.cn/news/533512.html

相关文章:

  • 洛谷网站: P3029 [USACO11NOV] Cow Lineup S 题解
  • 编程领域的IO模型(BIO,NIO,AIO)
  • DeepSeek和ChatGPT的对比
  • Pyqt 的QTableWidget组件
  • 4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践
  • 网络安全威胁框架与入侵分析模型概述
  • 树和二叉树_7
  • 不同标签页、iframe或者worker之间的广播通信——BroadcastChannel
  • 开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计
  • STC51案例操作
  • 多光谱技术在华为手机上的应用发展历史
  • C语言:函数栈帧的创建和销毁
  • NLP_[2]_文本预处理-文本数据分析
  • 【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代
  • 从O(k*n)到O(1):如何用哈希表终结多层if判断的性能困局
  • 视频采集卡接口
  • 蓝桥杯真题 - 像素放置 - 题解
  • vue基础(三)
  • 使用Python开发PPTX压缩工具
  • ubuntu24.04安装布置ros
  • SQL 秒变 ER 图 sql转er图
  • 【AI知识点】如何判断数据集是否噪声过大?
  • 网络安全治理架构图 网络安全管理架构
  • 如何写出优秀的单元测试?
  • 数据留痕的方法
  • 机器学习数学基础:19.线性相关与线性无关
  • ArgoCD实战指南:GitOps驱动下的Kubernetes自动化部署与Helm/Kustomize集成
  • JVM虚拟机以及跨平台原理
  • 【AIGC提示词系统】基于 DeepSeek R1 + ClaudeAI 易经占卜系统