刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
简答题
2.# 寻找页码
## 题目描述
几乎所有的书都会印页码,从第11页开始,页码组成的数字序列如下:
1,2,3,4,⋯ ,10,11,12,⋯1,2,3,4,⋯,10,11,12,⋯
现在,给定一个00到99之中的数码 a*a*,请问,a*a* 在这串序列中,第 k*k* 次出现,是在哪一页上?
以数码 11 为例,第一次出现在第 11 页,第二次出现在第 1010 页,第三次和第四次都出现在第 1111 页上。
## 输入格式
第一行:两个整数 a*a* 和 k*k*。
## 输出格式
单个整数表示答案。
## 输入样例#1
1 5
## 输出样例#1
12
## 输入样例#2
2 23
## 输出样例#2
120
## 说明提示
0≤a≤90≤*a*≤9
1≤k≤1001≤*k*≤100
## 限制
时间限制:1000ms
内存限制:128MiB
## 题目描述
几乎所有的书都会印页码,从第11页开始,页码组成的数字序列如下:
1,2,3,4,⋯ ,10,11,12,⋯1,2,3,4,⋯,10,11,12,⋯
现在,给定一个00到99之中的数码 a*a*,请问,a*a* 在这串序列中,第 k*k* 次出现,是在哪一页上?
以数码 11 为例,第一次出现在第 11 页,第二次出现在第 1010 页,第三次和第四次都出现在第 1111 页上。
## 输入格式
第一行:两个整数 a*a* 和 k*k*。
## 输出格式
单个整数表示答案。
## 输入样例#1
1 5
## 输出样例#1
12
## 输入样例#2
2 23
## 输出样例#2
120
## 说明提示
0≤a≤90≤*a*≤9
1≤k≤1001≤*k*≤100
## 限制
时间限制:1000ms
内存限制:128MiB
使用微信搜索喵呜刷题,轻松应对考试!
答案:
解析:
这个问题可以通过模拟的方式解决。我们可以遍历所有的页码,检查每个页码是否包含给定的数字a。为了找到第k次出现,我们需要记录之前多少次出现包含数字a的页码。这可以通过使用一个计数器来实现。每当遇到一个包含数字a的页码时,我们就增加计数器。如果计数器等于k,我们就找到了答案。
以下是C语言的伪代码:
int findPage(int a, int k) {
int count = 0; // 计数器,记录包含数字a的页码出现的次数
int page = 1; // 当前页码
while (true) {
if (page contains a) { // 检查当前页码是否包含数字a
count++; // 计数器增加
if (count == k) { // 如果是第k次出现
return page; // 返回当前页码
}
}
page++; // 下一页
}
}
注意:这里的"contains"函数需要实现判断一个数是否包含另一个数。可以通过将页码转化为字符串,然后使用字符串处理函数来实现。此外,由于页码的数值可能很大,需要使用较大的数据类型(如long long)来存储页码。另外要注意循环终止条件,确保程序能够正确结束。
在真实代码中,还需要处理输入和输出,包括从标准输入读取数据,将结果写入标准输出等。此外,还需要考虑程序的效率和准确性,确保在给定时间内找到正确的答案。
最后,根据题目的限制(时间限制:1000ms,内存限制:128MiB),需要优化算法以确保在给定时间内解决问题。这可能涉及到使用更高效的算法或数据结构来加速搜索过程。
创作类型:
原创
本文链接:2.# 寻找页码## 题目描述几乎所有的书都会印页码,从第11页开始,页码组成的数字序列如下:1,2
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



