ZZNU17级新生周赛第五场(仅限新生参加)
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/