image

编辑人: 流年絮语

calendar2025-07-03

message2

visits459

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (普及组)参考答案

一、实操题

1、 Cantor表

现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…

    输入:整数N(1≤N≤10000000)     输出:表中的第N项

         样例:         INPUT                        OUTPUT

                 N=7                          1/4

参考答案:对于输入的整数N,我们需要找到表中的第N项。首先,我们需要确定第N项位于表中的哪一行。由于表中的项是按照Z字形排列的,因此我们可以使用以下公式来确定第N项所在的行数:行数 = floor(sqrt(2N) + 0.5)然后,我们需要确定第N项在该行中的位置。由于每一行的项是按照递增的顺序排列的,因此我们可以使用以下公式来确定第N项在该行中的位置:位置 = 2*(行数-1)*行数 + (N - (行数-1)*行数)最后,我们需要确定第N项的具体值。由于表中的项是按照分数形式表示的,因此我们可以使用以下公式来确定第N项的具体值:分子 = 位置分母 = 行数


2、回文数

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:给定一个10进制数56,将56加56(即把56从右向左读),得到121是一个回文数。

    又如:对于10进制数87:

    STEP1:87+78  = 165                  STEP2:165+561 = 726

    STEP3:726+627 = 1353                STEP4:1353+3531 = 4884

    在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。

    写一个程序,给定一个N(2<=N<=10,N=16)进制数M,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”

    样例:    INPUT                                  OUTPUT

         N = 9  M= 87                           STEP=6

参考答案:对于给定的N进制数M,我们可以按照以下步骤来求解最少经过几步可以得到回文数:1. 将M从N进制转换为10进制。2. 从M的10进制表示开始,不断将其与它的逆序数相加,直到得到回文数或者步数超过30步。3. 如果在30步以内得到了回文数,则返回步数;否则输出“Impossible!”。


3、旅行家的预算

一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。样例: INPUT

D1=275.6  C=11.9  D2=27.4   P=2.8   N=2

OUTPUT  26.95(该数据表示最小费用)

参考答案:旅行家需要计算从出发地到目的地的最小费用。根据题目,我们需要考虑汽车油箱的容量、每升汽油能行驶的距离、出发点每升汽油价格以及沿途油站数。首先,我们需要判断旅行家是否能够到达目的地。如果沿途油站数N为0,且出发地到目的地的距离D1大于汽车油箱的容量C乘以每升汽油能行驶的距离D2,那么旅行家无法到达目的地,输出“No Solution”。否则,我们需要计算旅行家在每个油站加油的费用,并找到最小的费用。具体步骤如下:1. 如果N=0且D1>C*D2,输出“No Solution”,结束。2. 初始化费用min_cost为无穷大。3. 遍历每个油站i,从出发地到油站i的距离为Di,每升汽油的价格为Pi。* 计算从出发地到油站i所需的油量total_fuel = (Di+D1)/D2。* 如果total_fuel大于油箱容量C,跳过该油站。* 否则,计算在该油站加油的费用cost = ceil(total_fuel)*Pi。* 如果cost小于min_cost,更新min_cost为cost。4. 输出min_cost,结束。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (普及组)参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share