三级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【位运算·按位与及公共位统计】GESP三级 / CSP-J 题解:luogu-B4577 [GESP202609 三级] 公共二进制位
📅 2026-09-15·✍️ OneCoder·计算中...·⏱️ 5 分钟
#GESP#C++#GESP三级#CSP-J#位运算#二进制#真题#2026年9月#GESP202609
CCF GESP 2026年9月认证(第十五次认证)C++ 三级试题,洛谷 B4577。本题严格遵循 CCF GESP 官方大纲规范,重点考察位运算·按位与及公共位统计。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
B4577 [luogu-B4577 [GESP202609 三级] 公共二进制位]
🔗 洛谷原题传送门:B4577
题目要求
题目描述
小红有 个非负整数 。她将每个整数转换为二进制后,想知道有多少个二进制位在所有整数中均为 1。
二进制位从右向左编号为 。若某个整数的二进制表示中没有第 位,则认为它的第 位为 0。
请你求出满足条件的二进制位数量。
输入格式
第一行一个整数 ,表示整数的个数。 第二行 个非负整数 。
输出格式
输出一个整数,表示所有整数的二进制表示中均为 1 的二进制位数量。
输入输出样例
样例输入 #1
TEXT
3
13 7 15
样例输出 #1
TEXT
2
说明/提示
三个整数的二进制表示分别为 、 和 。其中第 0 位和第 2 位均为 1,因此答案为 2。 ,。
题目分析与解题思路
- 按位与(Bitwise AND)的数学本质:在二进制中,某个位在所有数中均为 1,当且仅当所有数的按位与结果在该位上为 1。因此,所有数二进制公共为 1 的位集合,等价于累计按位与的值:
- 快速统计 1 的个数(Hamming Weight):求出 之后,只需统计 二进制表示中 1 的个数即可。既可以通过循环
while (R > 0) { count += (R & 1); R >>= 1; },也可以直接使用内建函数__builtin_popcountll(R)。 - 数据规模:,单次遍历求与耗时 ,瞬时完成。
完整参考代码 (C++11)
CPP
/**
* Problem: luogu-B4577
* Standard: C++11 (CCF GESP 官方大纲规范)
* Author: OneCoder
*/
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n) || n <= 0) {
return 0;
}
long long common_bits;
cin >> common_bits;
// 顺序与后续所有数做按位与
for (int i = 1; i < n; ++i) {
long long a;
cin >> a;
common_bits &= a;
}
// 统计公共位中 1 的数量
int count = 0;
while (common_bits > 0) {
if (common_bits & 1) {
count++;
}
common_bits >>= 1;
}
cout << count << "\n";
return 0;
}
考点归纳与备考建议
- 考纲匹配度:严格对标 CCF GESP 三级考纲重点,绝不超纲,注重基础算法与逻辑建模规范;
- 规范防范:所有代码严格以 C++11 标准编译运行,针对整数溢出、边界判断、空状态均做了详尽严整的防御性处理。
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 三级⏱️ 5 分钟
【字符串模拟与动态子串检索】GESP三级 / CSP-J 题解:luogu-B4578 [GESP202609 三级] 分割字符串
CCF GESP 2026年9月认证(第十五次认证)C++ 三级试题,洛谷 B4578。本题严格遵循 CCF GESP 官方大纲规范,重点考察字符串模拟与动态子串检索。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 6 分钟
【GESP】C++三级真题 luogu-B4261 [GESP202503 三级] 2025
GESP三级真题,位运算相关问题,难度★★☆☆☆。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 5 分钟
【GESP】C++三级练习 luogu-P1319 压缩技术
GESP C++三级练习,字符串/位运算,难度★★☆☆☆。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!