一级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++一级练习 luogu-B2078, 含 k 个 3 的数
📅 2024-11-30·✍️ OneCoder·计算中...·⏱️ 3 分钟
#GESP#C++#基础语句
GESP一级循环和基本运算练习,但是相比普通的题来说,略有难度,难度★✮☆☆☆。
luogu-B2078
题目要求
题目描述
输入两个正整数 和 ,其中 , ,判断 是否恰好含有 个 ,如果满足条件,则输出
YES,否则,输出NO。
输入格式
输入一行,为两个整数 ,中间用单个空格间隔。
输出格式
满足条件,则输出
YES,否则,输出NO。
样例输入 #1
CONSOLE
1 行
43833 3
样例输出 #1
CONSOLE
1 行
YES
题目分析
- 首先,我们需要直接处理输入的正整数 ,通过对 进行取模和整除操作逐位检查每个数字。
- 在检查每个数字的同时,我们需要维护一个计数器,用于统计数字 3 的出现次数。
- 当我们遍历完所有数字后,比较计数器的值与输入的正整数 ,如果相等则输出
YES,否则输出NO。
示例代码
C++
25 行
#include <iostream> // 引入输入输出流库
using namespace std;
int main() {
long long m, k; // 定义两个长整型变量 m 和 k
cin >> m >> k; // 从标准输入读取两个正整数 m 和 k
int ans = 0; // 初始化计数器 ans,用于统计数字 3 的个数
while (true) { // 无限循环,直到手动中断
if (m % 10 == 3) { // 检查当前最低位是否为 3
ans++; // 如果是 3,计数器加 1
}
m /= 10; // 去掉最低位,继续检查下一位
if (m == 0) { // 如果 m 变为 0,说明所有位数都已检查完
break; // 退出循环
}
}
if (ans == k) { // 检查计数器 ans 是否等于 k
cout << "YES"; // 如果相等,输出 "YES"
} else {
cout << "NO"; // 否则,输出 "NO"
}
return 0; // 返回 0,表示程序正常结束
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
读者讨论与留言
💬 还没有读者留言,快来成为第一个讨论者吧!