好几天前老师说有测试赛,我一直没拿到题,所以一直没做,今天ll老师发到了群里,我就下载下来做了,感觉题目挺难,难度和去年软件大赛决赛c本科一个水准。。想在两个小时之内做完必须有聪哥那样的水平,我差不多一共用了3个半小时才做完,可能是因为我Java学的挺差的。。Java功底雄厚的童鞋,完全可以秒杀我。。
题目在这里:点击打开下载链接
第一题:连续平方数
题目描述:
为了表示方便,我们把5的平方记为:5^2
这样,连续自然数的平方和就记为:1^2 + 2^2 + 3^2 + 4^2 + …
请看下面的公式:
1^2 + 2^2 + 3^2 + 4^2 + … + x^2 = y^2
是不是存在整数x,y,使得公式成立呢然x=y=1 勉强成立,数学上称为“平凡解”。
你的任务是寻找该方程的某个非平凡解(实际上只有1个)。
请填写该公式中x所代表的数字。
注意不要填写多余的内容。
答案与得分:
24 得分10分
分析:
纯暴力就行。。。代码如下
代码:
第二题:硬币方案
题目描述:
有50枚硬币,可能包括4种类型:1元,5角,1角,5分。
已知总价值为20元。求各种硬币的数量。
比如:2,34,6,8 就是一种答案。
而 2,33,15,0 是另一个可能的答案,显然答案不唯一。
你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的2个)br>
直接提交该数字,不要提交多余的内容。
答案与得分:
50 得分16分
分析:
(PS:如果不知道dp是啥,或者感觉无从下手的,就先看背包九讲中的第一部分01背包,然后再做我博客里面DP背包专辑中01背包的部分,做完前11道题,再敲一下完全背包的前两题,然后这道题就很轻松了。。。) 看到这道题第一反应就是dp,如果换做一年前的话就是暴搜了,暴搜肯定能出结果,但是效率、空间各方面都不如dp,而且如果这道题放在OJ上面,暴搜一般就会TLE掉。 dp的状态转移方程如下: for (i = 0; i < 4; i++)
for (j = 1; j <= 50; j++)
for (k = 400; k >= coin[i]; k–)
dp[j][k] += dp[j-1][k-coin[i]];
实际上就是一个递推,dp[j][k] 表示硬币个数在j以内,弄出k块钱的解法的个数。
代码:
第三题:连续公倍数
题目描述: 为什么1小时有60分钟,而不是100分钟呢是历史上的习惯导致。
但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
我们希望寻找到能除尽1至n的的每个数字的最小整数。
不要小看这个数字,它可能十分大,比如n=100, 则该数为:
69720375229712477164533808935312303556800
为此,有必要使用BigInteger来记录这样的大数。
请阅读下面的代码,填写缺失的部分(下划线部分)。
答案与得分:
x[j] /= x[i] 18分
分析:
额。。怎么说呢。。每次做填空题就是凭着感觉。。就做出来了。。
第四题:二阶魔方
题目描述:
魔方可以对它的6个面自由旋转。
我们来操作一个2阶魔方(如图1所示)
为了描述方便,我们为它建立了坐标系。
xyz 则表示顺序执行x,y,z 3个操作
题目的要求是:
从标准输入获得一个串,表示操作序列。
程序输出:距离我们最近的那个小方块的3个面的颜色。
顺序是:x面,y面,z面。
例如:在初始状态,应该输出:
绿红白
初始状态下,如果用户输入:
x
则应该输出:
绿白橙
初始状态下,如果用户输入:
zyx
则应该输出:
红白绿
样例输入:
xy
xxyyy
xyzzzzyyyxxx
xyyzzz
xyxyzzxyxyzz
样例输出:
红白绿
白红蓝
绿红白
黄绿橙
白绿红
得分:
5组数据,正确数据个数*5 满分25
分析:
其实这道题可以通过对编 来进行找规律,从而更快更有效的来重置魔方,但是本弱菜太菜了。。只能通过手工画图,然后一一对比,找到转换魔方编 的方法。。。相当于纯暴力,代码比较容易读懂。。下图是我画的图。。 每个格子表示颜色,白色用灰色代替了。。每四个小格子组成一个大格子,左上角写了他属于一开始的哪一个面, 用直线画的是每一种转法。。。可能会有点乱,少有不慎就会有错误结果
代码:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!