欢迎光临
我们一直在努力

题解:洛谷 B4497 [GESP202603 二级] 数数

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:B4497 [GESP202603 二级] 数数 – 洛谷

【题目描述】

对于正整数

n

n

n,如果

n

n

n 的所有数位中包含恰好

3

3

3

2

2

2,Alice 会认为这个正整数是美丽的。例如,正整数

24122

24122

24122 中包含

3

3

3

2

2

2,所以

24122

24122

24122 是美丽的;正整数

132

132

132 中包含

1

1

1

2

2

2,所以

132

132

132 不是美丽的;正整数

212322

212322

212322 中包含

4

4

4

2

2

2,所以

212322

212322

212322 不是美丽的。

Alice 想知道正整数

L

L

L 到正整数

R

R

R(包括

L

L

L

R

R

R)中有多少美丽的正整数,你能帮她数一数吗?

【输入】

输入共

2

2

2 行,第一行为正整数

L

L

L,第二行为正整数

R

R

R

【输出】

输出一行,包含一个整数

C

C

C,表示

L

L

L

R

R

R

C

C

C 美丽数的数量。

【输入样例】

2221
2223

【输出样例】

2

【算法标签】

#入门 #语法基础

【代码详解】

#include <bits/stdc++.h> // 包含所有标准库头文件
using namespace std; // 使用标准命名空间

int l, r, ans; // 定义三个整型变量:l(左边界), r(右边界), ans(结果计数器)

// 判断一个整数是否恰好包含3个数字2
bool check(int x)
{
int res = 0; // 计数器,记录数字2出现的次数

// 逐位检查数字x的每一位
while (x)
{
// 检查当前个位数是否为2
if (x % 10 == 2)
{
res++; // 如果是2,计数器加1
}
x /= 10; // 去掉当前个位数,继续检查下一位
}

// 返回判断结果:数字2是否恰好出现3次
return res == 3;
}

int main() // 主函数入口
{
cin >> l >> r; // 输入区间范围[l, r]

// 遍历区间[l, r]中的每一个整数
for (int i = l; i <= r; i++)
{
// 检查当前数字i是否满足条件
if (check(i))
{
ans++; // 如果满足条件,计数器加1
}
}

cout << ans << endl; // 输出满足条件的数字个数
return 0; // 程序正常结束
}

【运行结果】

2221
2223
2

赞(0)
未经允许不得转载:171主机测评 » 题解:洛谷 B4497 [GESP202603 二级] 数数
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址