理论卷2024年12月青少年软件编程(C\C++) · 三级

YLT C++ 3级 2024.12

满分 100 · 及格 60 · 时长 60 分钟 · 共 5 题 (编程题5)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
编程题题号 #22295
分值 20

N3133 [CIE 202412 三级 T1] 最近的斐波那契数

题目描述

斐波那契数列 FnF_n 的定义为:对 n≥0n \ge 0 有 Fn+2=Fn+1+FnF_{n+2} = F_{n+1} + F_n,初始值为 F0=0F_0 = 0 和 F1=1F_1 = 1。所谓与给定的整数 NN 最近的斐波那契数是指与 NN 的差之绝对值最小的斐波那契数。本题就请你为任意给定的整数 NN 找出与之最近的斐波那契数。

输入格式

输入在一行中给出一个正整数 N(≤108)N(\le 10^8)。

输出格式

在一行输出与 NN 最近的斐波那契数。如果解不唯一,输出最小的那个数。

样例

样例 1
输入:

305

输出:

233

提示

样例解释:部分斐波那契数列为 {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,…}\{ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, \ldots \}。可见 233233 是与 305305 最近的斐波那契数。

2
编程题题号 #22296
分值 20

N3134 [CIE 202412 三级 T2] 构造性证明

题目描述

关于数学定理证明,也有高下之分。最暴力的证明方法是“构造性证明”,即当需要证明某种解存在时,直接把解构造出来,而不是仅通过推理证明解之存在。
下面有一个定理:
设 aia_i(i=1,…,5i=1, \ldots, 5)均为正实数。则一定存在 44 个互不相同的下标 ii、jj、kk、ll,使得 ∣ai/aj−ak/al∣<1/2|a_i / a_j - a_k / a_l| < 1/2。
作为程序员,就请你编写程序构造出正确的下标,验证这个结论。

输入格式

输入在一行中顺序给出 55 个正实数。为保证计算中不产生浮点溢出,我们令输入的数字在 [10−10,1010][10^{-10}, 10^{10}] 区间内,且小数点后不超过 1010 位小数。

输出格式

在一行中首先输出使得定理结论成立的下标有多少套,随后输出最小的一套下标。数字间以 11 个空格分隔,行首尾不得有多余空格。注:所谓下标集 {i1,…,i4}\{i_1, \ldots, i_4\} 小于下标集 {j1,…,j4}\{j_1, \ldots, j_4\},是指存在 1≤k≤41 \le k \le 4 使得 il=jli_l = j_l 对所有 l<kl < k 成立,且 ik<jki_k < j_k。

样例

样例 1
输入:

3.12 5.27 0.0007 9825.4413 10

输出:

18 1 4 3 2

提示

样例解释:易验证 ∣a1/a4−a3/a2∣=∣3.12/9825.4413−0.0007/5.27∣<1/2|a_1 / a_4 - a_3 / a_2| = |3.12 / 9825.4413 - 0.0007 / 5.27| < 1/2。
满足条件的解有 1818 个,例如 55、44、33、22 就是另一套解。

3
编程题题号 #22297
分值 20

N3135 [CIE 202412 三级 T3] 环形公路出口

题目描述

一条环形高速路上有 NN 个出口。给定任意一对出口,请你算出这两个出口之间的最短距离。

输入格式

输入第一行给出区间 [3,105][3, 10^5] 内的整数 NN,以及 NN 个整数距离 D1D_1 D2D_2 …\ldots DND_N,其中 DiD_i 是第 ii 和第 i+1i+1 个出口之间的距离,DND_N 是第 NN 和第 11 个出口之间的距离。同行数字间以空格分隔。
第二行给出正整数 MM(≤104\le 10^4)。
随后 MM 行,每行给出一对出口的编号(出口从 11 到 NN 顺序编号)。
题目保证公路全长不超过 10710^7。

输出格式

输出 MM 行,每行给出对应输入的一对出口之间的最短距离。

样例

样例 1
输入:

5 1 2 4 14 9
3
1 3
2 5
4 1

输出:

3
10
7
4
编程题题号 #22298
分值 20

N3136 [CIE 202412 三级 T4] 子串和子列

题目描述

子串是一个字符串中连续的一部分,而子列是字符串中保持字符顺序的一个子集,可以连续也可以不连续。例如给定字符串 atpaaabpabtt,pabt 是一个子串,而 pat 就是一个子列。
现给定一个字符串 SS 和一个子列 PP,本题就请你找到 SS 中包含 PP 的最短子串。若解不唯一,则输出起点最靠左边的解。

输入格式

输入在第一行中给出字符串 SS,第二行给出 PP。SS 非空,由不超过 10410^4 个小写英文字母组成;PP 保证是 SS 的一个非空子列。

输出格式

在一行中输出 SS 中包含 PP 的最短子串。若解不唯一,则输出起点最靠左边的解。

样例

样例 1
输入:

atpaaabpabttpcat
pat

输出:

pabt
5
编程题题号 #22299
分值 20

N3137 [CIE 202412 三级 T5] 拼大数

题目描述

如何随机生成一个有 nn 位数的大数呢?一种方法是,找到 nn 个小朋友,每人发一张卡片,卡片一面写着编号(这里假设小朋友们从 11 到 nn 编号),另一面让他们随便写下一个 11 位数字。然后让小朋友们把自己的卡片在墙上钉成一排,要求一张挨着一张,按他们的编号升序排列,显示他们自己写的数字。
但是,让十万个孩子都按指令行动,可太难了。结果是卡片乱七八糟满墙都是,有些甚至显示的不是正确的面。例如第 2323 号小朋友在卡片上写了 88,我们应该在墙上看到 88,但是却看到了 2323…… 你的任务就是把这些卡片整理好,得到我们真想要拼成的大数。

输入格式

输入第一行给出一个正整数 nn(≤105\le 10^5),随后 nn 行,每行按 n1 n2n_1\ n_2 的格式给出一张卡片两面的数字。

输出格式

在一行中输出我们真想要拼成的 nn 位大数。如果卡片两面都是 11 位数,那么就很难说哪个数字是编号,哪个数字是小朋友自己写的,所以解可能是不唯一的。这时候需要输出能得到的最小的数字。

样例

样例 1
输入:

12
7 11
8 9
3 1
2 12
4 6
10 0
5 1
2 5
6 8
1 4
7 2
9 3

输出:

359114268072
海小星AI平台海小星AI平台

点亮AI梦想,编程未来之星。专业的青少年AI编程教育平台。

课程方向

  • AIGC人工智能
  • Scratch图形化
  • Python编程
  • C++/NOIP竞赛

联系我们

  • 北京市西城区万博苑7号楼3层F28室
  • +86-010-83553010
  • contact@seanova.cn

© 2026 海小星AI平台|京ICP备2022032747号

隐私政策服务条款