- 公告
南阳理工学院第四届省内高校新生程序设计大赛(网络)初赛 题解
- 2023-12-11 20:00:52 @
A.Hello World!
本题复制样例输出即可,手打的话需要注意大小写以及字符。
B.A+B
标准a+b,只需要注意题目给的数据范围,如果两个数都是这个范围,那么会炸int的范围,需要开long long。
C.烦人的小数问题
本题考查了浮点数的取整问题,建议都使用double进行运算。本题考查的是五舍六入,具体方法是给计算出的浮点数+0.4后取整即可。
D.你玩过以撒吗?
因为6个能量可以合成一个永恒之心,所以当我们在某一层最多可以获得的永恒之心的数量(从上一层继承下来的能量+当前层的总能量)。
根据题意我们可以得到:
当为偶数时,我们在此层会获得的容器。
当为奇数时,我们在此层会获得的容器,但当我们进入下一层会额外获得一个容器。
所以,从当前层进入下一层:
当为偶数时会获得的容器。
当为奇数时会获得的容器。
那么,从当前层进入下一层,当为偶数时,个永恒之心与个永恒之心可以获得的容器的数量是一样的,例如:4个永恒之心可以获得2个容器,3个永恒之心同样也可以获得2个容器。
所以,当我们在某一层(除最后一层外)最多可以获取的永恒之心的数量为偶数时,我们不妨少合成一个永恒之心,让能量充满进入下一层,这样可以获得同等数量的容器,但可以使更多的能量继承到下一层。
以题目第一个样例为例,第一层有12个房间(也就是12个能量),如果全部合成为永恒之心,那我们会获得一个容器(两个永恒之心自动合成一个容器),但进入下一层时能量为0(全用来合成了),但如果我们只合成一个永恒之心,剩下6个能量继承到下一层,那我们进入下一层时就有一个容器和6个能量。
以此方法一直到最后一层,因为最后一层不用进入下一层,所以最后一层直接把能量全部合成为永恒之心,进而转化为容器即可。因为6个能量可以合成一个永恒之心,所以当我们在某一层最多可以获得的永恒之心的数量num=(从上一层继承下来的能量+当前层的总能量)/6。
E.一个简单的问题!
本题考查进制转换,以及判断一个数是否为的幂次方。进制转换的方法参考十进制转二进制,若需要10进制转进制,只需要进行取余和除的运算,倒叙输出即可。由于数据范围不大,在判断是否为n的幂次方时,只需要把一个数从1一直×,判断是否会和输入的数相等即可。
F.冰冰想yq
此题数据范围很小,直接暴力匹配。
枚举字符串的每一位作为字符串的起始,接着判断该起始位以后2位是否是“yq”即可,"kongxye"同理。