ZZNU17级新生周赛第五场(仅限新生参加)

时间:2023-01-09 09:15:02
A : 倾城 倾国 倾家荡产   如果下一年是平年,那么下一年的双十一距今年双十一是365天,如果下一年是闰年,则下一年的双十一距今年双十一是366天. 比如2000年双十一是周6,那么2001年的双十一就是周(6+365)%7; 这里需要注意,如果数字是7的倍数“%7”后会得到0;“0”代表星期天。也就是周7; 所以在输出前,我们特判: if(day==0) { day=7; } 代码链接:http://paste.ubuntu.com/25973307/   B : 正方形   这是一道打印题也是根据样例推测输出的题。 输入一个n,我们知道要输出n行,其中第一行和第n行输出n个‘*’; 其余行输出2个‘*’,中间隔着n-2个空格   代码链接:http://paste.ubuntu.com/25973324/   C : Do you still remember me?   这是一道考验代码优化能力的题。如果不对循环做出改进结果一定是时间超限。   优化方法详见代码。   代码链接:http://paste.ubuntu.com/25973327/   D : 听说梯形很简单   这是一道由梯形四边求梯形面积的题。(注意a,c没有说明谁是底边所以两种情况都要考虑)   梯形的高可以通过勾股定理列出方程组求得,也可以通过海伦公式求得。   接下来就是梯形面积公式 梯形面积 = (上底 + 下底)×高÷2   勾股定理解法代码链接:http://paste.ubuntu.com/25973334/ 海伦公式解法代码链接:http://paste.ubuntu.com/25973516/     E : 库洛里多的继承者   找到n 和m的最小公倍数让它除以m即为所求。   代码链接:http://paste.ubuntu.com/25973336/   F : Andryusha and Socks   开数组标记袜子值即可。a[n]; 首先把数组初始化为0 放在桌子上袜子的标记为1. 比如我们把袜子1从袋子里拿出来 此时检查a[1]的值是否为1,为1表示桌子上已经存在一直袜子1.为0表示桌子上没有袜子1.   代码链接:http://paste.ubuntu.com/25973623/     G : Hanoi双塔问题   不难发现: An=2An-1+2(特别的,A1=2) 证明如下: 要将A柱上的2n个盘子移到C柱上,最佳的策略就是先将(2n-2)个盘子借助C柱移到B柱上,所需的次数为An-1,再将A柱上最大的两个盘子直接移到C柱上,所需的次数为2,最后将B柱上的(2n-2)个盘子借助A柱移到C柱上,所需的次数为An-1。总次数An=An-1+2+An-1=An=2An-1+2。 进而,可以得出: An=2n+1-2 然后使用高精度计算。   代码链接:http://paste.ubuntu.com/25973345/