CSD程序设计题目

        555, 和lijun设计了二天的题目,  居然不小心发给他们后连答案都被泄露了出来, 只好重出...   嗯, 下面是上次的, 现在没用了, 只好放在这上面放放喽!

1.       Fibonacci数列

1201年,意大利数学家Fibonacci发现了以他自己的名字命名的数列--- Fibonacci数列。他是在研究兔子的生长、繁殖的规律中发现这一数列的。他用Fn代表n个月后兔子的对数。因为从一对新生的兔子开始,所以,F0=1 F1=1,而后,由Fn=Fn-2+Fn-1递推得到接下来的每一项。现给你任一整数n(1<n<2^31),试判数该数是不是Fibonacci数列中的一项,如是,并给出是其中的第几项.

样例输入:

10

3

4

5

样例输出:

No

Yes 3

No

Yes 4

2.       折纸痕

你喜欢折纸吗?给你一张很大的纸,对折以后再对折,再对折......每次对折都是从右往左折,因此在折了很多次以后,原先的一个大纸会变成一个窄窄的纸条.现在把这个纸条沿着折纸的痕迹打开,每次都只打开"一半",即把每个痕迹做成一个直角,那么从纸的一端沿着和纸面平行的方向看过去,会看到一个美妙的曲线.例如,如果你对折了4次,那么打开以后你将看到如下图1所示的曲线.注意,该曲线是不自交的,虽然有两个转折点重合。给出对折的次数,请编程绘出打开后生成的曲线。

图1 对折4次后形成的曲线

样例输入:

2

4

1

样例输出:

|_

 _|

^

   _   _

  |_|_| |_

   _|    _|

|_|

^

_|

^

3.       树重建

给出一棵标号树的BFS(广度优先遍历)序列和DFS(深度优先遍历)序列,设计一个程序重新建立这棵树(结点数n<=1000).当某结点被扩展时,它的所有孩子应该按照编号从小到大的顺序访问.例如一棵树的BFS序列为4 3 5 1 2 8 7 6DFS序列为4 3 1 7 2 6 5 8,则一棵满足条件的树如下图2所示:

 

图2 一棵满足条件的树

4.       对对碰游戏

对对碰游戏(又有叫夺宝奇兵)相信大家很多人都玩过吧.在这个游戏中,有64个不同的宝石分布 在一个8*8的棋盘里,每一个回合,你能够交换一次任意二个相邻的宝石得到一个新的状态,这时,只要有三个或三个以上相同的宝石连成一横或者一竖,那么这几个宝石即会消去,同时上面的宝石随即下落填充该空间。现在,你的任务就是,分析一个给定的棋局状态,交换一次宝石,然后告诉我有最多能有多少个宝石能够被消去.

假设给定的棋局当中没有出现马上能够消去的情况.棋局的输入包括8行,每行含有8个大写字母,不同的字母表示不同种类的宝石.如以下两例输入:

AABBAABB
AABBAABB
BBAABBAA
BBAABBAA
AABBAABB
AABBAABB
BBAABBAA
BBAABBAA

 

AABBAABB
BBAABBAA
AABBAABB
BBAABBAA
AABBAABB
BBAABBAA
AABBAABB
BBAABBAA

输出结果分别为:

6

6

5.       超长数字串

给您一个数字串S: 12345678910111213141516171819202122…它是由所有自然数从小到大依次排列起来的。现任意给一个数字串S1(S1的长度不超过200个数字),容易知道它在S串中一定出现无穷多次.试编程求出它第一次出现的位置.如对于串” 81” ,它最先出现在位置27。如” 101” ,其最先出现的位置为10

输入样例为:

81

101

输出样例为:

27

10

 

6.       数学家们的游戏

传说生活在XVIII世纪的数学家们喜欢玩下面这个游戏。这个游戏由三个数学家玩。其中一人是游戏庄家。首先,游戏庄家说出某个正整数N。然后他选择两个不同的整数XY,范围从1N并且告诉一个游戏者它们的和,告诉另外一个游戏者它们的乘积。每个游戏者都知道他说的是所选数的和还是乘积。此后游戏者轮流告知庄家他们是否知道他所选的数。首先,被告知数之和的游戏者说出他是否知道那些数,然后被知乘积的游戏者说,等等

如下对话:

庄家:“设N10。”

此后他选择两个范围从110的数,并且告诉游戏者S它们的和,告诉游戏者P它们的乘积。

游戏者S:“我不知道这两个数。”

游戏者P:“我不知道这两个数。”

游戏者S:“我不知道这两个数。”

游戏者P:“我不知道这两个数。”

游戏者S:“噢,现在我知道了,你选了36。”

输入给予数N M ,分别为数的范围和游戏者说“我不知道这两个数”的次数,请你找出游戏庄家选出的所有可能的数的配对。输出第一行为所有可能的配对数,接下来以任意的次序输出这些配对数。

样例输入

10 4

样例输出

3

2 5

3 6

3 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值