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

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程试题:计算机学科-夏令营上机考试题解相关的知识,希望对你有一定的参考价值。

作为一个编程学习者,自己多多练习刷刷题总是没错的。

A:欧元支付

动态规划

全局题号254 提交次数90 尝试人数35 通过人数17

总时间限制:

1000毫秒

内存限制:

65536kB

描述

2002 年 1 月 1 日,荷兰和其他几个欧洲国家放弃了本国货币,转而使用欧元。这改变了支付的便利性,而不仅仅是国际。

在 1 月 1 日之前购买 68 荷兰盾的书的学生可以用一张 50 荷兰盾的钞票和两张 10 荷兰盾的钞票支付这本书,收到两荷兰盾的零钱。简而言之:50+10+10-1-1=68。其他支付方式有:50+25-5-1-1,或100-25-5-1-1。无论哪种方式,支付过程中总是涉及5个单位(纸币或硬币),它

不能用少于 5 个单位完成。

现在买 68 欧元的书更容易了:50+20-2 = 68,所以只涉及 3 个单位。这不是巧合;在许多其他情况下,用欧元支付比用荷兰盾支付更有效。平均而言,欧元更有效。当然,这与欧元的价值无关,而是与选择的单位有关。荷兰盾的单位过去是:1、2.5、5、10、25、50,而欧元的单位是:1、2、5、10、20、50。

对于这个问题,我们将自己限制为最多 100 美分。欧元有价值 1、2、5、10、20、50 欧分的硬币。在支付 [1, 100] 欧分范围内的任意金额时,平均涉及 2.96 个硬币,作为支付或找零。从这个意义上说,欧元系列并不是最佳的。对于硬币 1、24、34、39、46、50,可以使用两个硬币支付 68 美分。支付 [1, 100] 范围内的金额所涉及的平均硬币数量为 2.52。

然而,后一个系列的计算更为复杂。也就是说,心算。这些计算可以很容易地在任何手机中编程,现在几乎每个人都随身携带。为未来做准备,欧洲中央银行的一个委员会正在研究硬币系列的效率,以找到最高 100 欧分的最有效系列。他们需要你的帮助。

编写一个程序,给定一系列硬币,计算支付任何金额(包括 100 美分)所需的平均和最大硬币数量。您可以假设所涉及的双方都有足够数量的任何硬币可供使用。

输入

输入的第一行包含测试用例的数量。每个测试用例由 6 个不同的正整数在一行中描述:硬币的值,按升序排列。第一个数字始终为 1。最后一个数字小于 100。

输出

对于每个测试用例,输出是一行,首先包含平均值,然后是支付范围 [1, 100] 中涉及的最大硬币数。这些值由空格分隔。如示例所示,平均值应始终包含小数点后两位数。最大值始终是整数。

样例输入

样例输出

C++实现

B:判决素数个数

全局题号2178 提交次数95 尝试人数32 通过人数28

总时间限制:

1000ms

内存限制:

65536kB

描述

输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。

输入

两个整数X和Y(1 <= X,Y <= 105)。

输出

输出一个整数,表示X,Y之间的素数个数(包括X和Y)。

样例输入

样例输出

C++代码

C:编码字符串

全局题号12556 提交次数56 尝试人数32 通过人数32

总时间限制:

1000ms

内存限制:

65536kB

描述

在数据压缩中,一个常用的方法是行程长度编码压缩。对于一个待压缩的字符串,我们可以依次记录每个字符及重复的次数。例如,待压缩的字符串为”aaabbbbcbb”,压缩结果为(a,3)(b,4)(c,1)(b,2)。这种压缩对于相邻数据重复较多的情况有效,如果重复状况较少,则压缩的效率较低。

现要求根据输入的字符串,首先将字符串中所有大写字母转化为小写字母,然后将字符串进行压缩。

输入

一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。

输出

输出为编码之后的字符串,形式为:(a,3)(b,4)(c,1)(d,2),即每对括号内分别为小写字符及重复的次数,不含任何空格。

样例输入

样例输出

C++实现

D:岛屿周长

全局题号12558 提交次数38 尝试人数28 通过人数28

总时间限制:

1000ms

内存限制:

65536kB

描述

用一个n*m的二维数组表示地图,1表示陆地,0代表海水,每一格都表示一个1*1的区域。地图中的格子只能横向或者纵向连接(不能对角连接),连接在一起的陆地称作岛屿,同时整个地图都被海水围绕。假设给出的地图中只会有一个岛屿,并且岛屿中不会有湖(即不会有水被陆地包围的情况出现)。请判断所给定的二维地图中岛屿的周长。

输入

第一行为n和m,表示地图的大小(1<=n<=100, 1<=m<=100)。接下来n行,每行有m个数,分别描述每一格的数值。数值之间均用空格隔开。

输出

只有一行,即岛屿的周长(正整数)。

样例输入

样例输出

C++实现

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!

C/C++编程学习

微信公众号:C语言编程学习基地

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会~

以上是关于C++编程试题:计算机学科-夏令营上机考试题解的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

编程试题练习:2018计算机学科-夏令营上机考试题解

2017计算机学科夏令营上机考试-A判决素数个数

2017计算机学科夏令营上机考试-B编码字符串