C++编程试题:计算机学科-夏令营上机考试题解



C++编程试题:计算机学科-夏令营上机考试题解

A:保险箱破解器

全局题号250 提交次数35 尝试人数17 通过人数13
总时间限制:
1000毫秒
内存限制:
65536kB

描述

“这件物品被锁在二楼图书馆的一幅画后面的克莱恩保险箱里 。克莱因保险箱极为罕见;他们中的大多数,连同克莱因和他的工厂 , 都在二战中被摧毁 。好在研究的老布伦博知道克莱恩的秘密 , 并在他死前写下了 。克莱因保险箱有两个显着特点:一个使用字母而不是数字的密码锁,以及一个刻在门上的引文 。克莱因引文总是包含五到十二个不同的大写字母 , 通常在句子的开头,并提到一个或多个数字 。五个大写字母组成了打开保险箱的组合 。通过以适当的方式组合所有数字中的数字,您可以获得一个数字目标 。(构建目标数的细节是分类的 。) 要找到组合,您必须选择满足以下等式的五个字母 v、w、x、y 和 z,其中每个字母替换为其在字母表中的序号位置 (A=1, B=2, ..., Z =26) 。然后组合为 vwxyz 。如果有多个解决方案,则该组合是字典顺序上最大的一个,即在字典中最后出现的那个 。”
v – w 2 + x 3 – y 4 + z 5 = 目标
“例如 , 给定目标 1 和字母集 ABCDEFGHIJKL,一个可能的解决方案是 FIECB,因为 6 – 9 2 + 5 3 – 3 4 + 2 5 = 1 。在这种情况下实际上有几种解决方案,组合结果是成为LKEBA 。克莱恩认为在雕刻中编码组合是安全的,因为即使你知道其中的秘密 , 也可能需要几个月的努力才能尝试所有的可能性 。当然,那时计算机还不存在 。”
“开发一个程序来寻找克莱因组合,为现场部署做准备 。根据部门规定使用标准测试方法 。

输入

输入由一行或多行组成 , 其中包含一个小于 1200 万的正整数目标、一个空格,然后是至少五个且最多十二个不同的大写字母 。最后一行将包含零目标和字母 END;这表示输入结束 。

输出

对于每行输出唯一的 Klein 组合,如果没有正确的组合,则输出“无解” 。使用如下所示的确切格式 。”
样例输入
C++编程试题:计算机学科-夏令营上机考试题解

样例输出
C++编程试题:计算机学科-夏令营上机考试题解

C++实现


C++编程试题:计算机学科-夏令营上机考试题解

B:怪盗基德的滑翔翼

全局题号4977 提交次数51 尝试人数20 通过人数18
总时间限制:
1000毫秒
内存限制:
65536kB

描述

怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯 。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼 。
有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了 。不得已,怪盗基德只能操作受损的滑翔翼逃脱 。
C++编程试题:计算机学科-夏令营上机考试题解

假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同 。初始时,怪盗基德可以在任何一幢建筑的顶端 。他可以选择一个方向逃跑,但是不能中途改变方向(因为中森警部会在后面追击) 。因为滑翔翼动力装置受损,他只能往下滑行(即:只能从较高的建筑滑翔到较低的建筑) 。他希望尽可能多地经过不同建筑的顶部,这样可以减缓下降时的冲击力,减少受伤的可能性 。请问,他最多可以经过多少幢不同建筑的顶部(包含初始时的建筑)?

输入

输入数据第一行是一个整数K(K < 100),代表有K组测试数据 。
每组测试数据包含两行:第一行是一个整数N(N < 100),代表有N幢建筑 。第二行包含N个不同的整数,每一个对应一幢建筑的高度h(0 < h < 10000),按照建筑的排列顺序给出 。

输出

对于每一组测试数据,输出一行 , 包含一个整数,代表怪盗基德最多可以经过的建筑数量 。
样例输入
C++编程试题:计算机学科-夏令营上机考试题解

样例输出
C++编程试题:计算机学科-夏令营上机考试题解

C++实现
C++编程试题:计算机学科-夏令营上机考试题解

【C++编程试题:计算机学科-夏令营上机考试题解】

相关经验推荐