• 公告
  • 南阳理工学院第四届省内高校新生程序设计大赛(网络)初赛 题解

  • @ 2023-12-11 20:00:52

A.Hello World!

\quad本题复制样例输出即可,手打的话需要注意大小写以及字符。


B.A+B

\quad 标准a+b,只需要注意题目给的数据范围23112^{31}-1,如果两个数都是这个范围,那么会炸int的范围,需要开long long。


C.烦人的小数问题

\quad 本题考查了浮点数的取整问题,建议都使用double进行运算。本题考查的是五舍六入,具体方法是给计算出的浮点数+0.4后取整即可。


D.你玩过以撒吗?

\quad 因为6个能量可以合成一个永恒之心,所以当我们在某一层最多可以获得的永恒之心的数量num=num=(从上一层继承下来的能量+当前层的总能量)/6/6

根据题意我们可以得到:

\quad \quadnumnum为偶数时,我们在此层会获得(num/2)(num/2)的容器。

\quad \quadnumnum为奇数时,我们在此层会获得(num/2)(num/2)的容器,但当我们进入下一层会额外获得一个容器。

所以,从当前层进入下一层:

\quad\quadnumnum为偶数时会获得(num/2)(num/2)的容器。

\quad\quadnumnum为奇数时会获得(num/2)+1(num/2)+1的容器。

那么,从当前层进入下一层,当numnum为偶数时,numnum个永恒之心与(num1)(num-1)个永恒之心可以获得的容器的数量是一样的,例如:4个永恒之心可以获得2个容器,3个永恒之心同样也可以获得2个容器。

所以,当我们在某一层(除最后一层外)最多可以获取的永恒之心的数量numnum为偶数时,我们不妨少合成一个永恒之心,让能量充满进入下一层,这样可以获得同等数量的容器,但可以使更多的能量继承到下一层。

以题目第一个样例为例,第一层有12个房间(也就是12个能量),如果全部合成为永恒之心,那我们会获得一个容器(两个永恒之心自动合成一个容器),但进入下一层时能量为0(全用来合成了),但如果我们只合成一个永恒之心,剩下6个能量继承到下一层,那我们进入下一层时就有一个容器和6个能量。

以此方法一直到最后一层,因为最后一层不用进入下一层,所以最后一层直接把能量全部合成为永恒之心,进而转化为容器即可。因为6个能量可以合成一个永恒之心,所以当我们在某一层最多可以获得的永恒之心的数量num=(从上一层继承下来的能量+当前层的总能量)/6。


E.一个简单的问题!

本题考查进制转换,以及判断一个数是否为nn的幂次方。进制转换的方法参考十进制转二进制,若需要10进制转mm进制,只需要进行取余mm和除mm的运算,倒叙输出即可。由于数据范围不大,在判断是否为n的幂次方时,只需要把一个数从1一直×nn,判断是否会和输入的数相等即可。


F.冰冰想yq

此题数据范围很小,直接暴力匹配。

枚举字符串的每一位作为字符串的起始,接着判断该起始位以后2位是否是“yq”即可,"kongxye"同理。

0 条评论

目前还没有评论...