数学问题
Problem1数的划分
题目描述
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入
输入仅一行,即N,K(N<=200,K<=20)
输出
输出仅一个数,即总共的方法数
Problem2最优分解方案
题目描述
给定整数N,将其分解为若干个互不相同的整数,是他们的乘积最大
输入
输入仅一个数,N(N<=1000)
输出
输出最大乘积
Problem3出栈序列统计
题目描述
栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你已经知道栈的操作有两·种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出.现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列.请你编程求出对于给定的n,计算并输出由操作数序列1,2,…,n,经过一系列操作可能得到的输出序列总数.
输入
输入一个整数n(1<=n<=50)
输出
输出一个整数,即可能输出序列的总数目。
Problem4百事世界杯之旅
题目描述
每个瓶盖上有一个球星的名字,有N个不同的球星,平均情况下,要买多少瓶饮料才能集齐所有名字
输入
输入一个数N(<=33)
输出
输出平均情况下的瓶数,若为整数则直接输出,若为分数,则以真分数形式输出,格式如下:
b
a-
c
Problem5电子锁
题目描述
某机要部门安装了电子锁。m个工作人员每人发一张磁卡,卡上有开锁的密码特征,为了保证安全,规定至少n个人同时使用各自的磁卡才能将锁打开。现在需要你计算一下,电子锁上至少要有多少种特征,每个人的磁卡上至少要有几种特征。同时输出分配方案。
输入
输入仅一行,有两个数即m(m<=7),n(<=m且<=4)
输出
输出第一行为两个数,既电子锁上的特征数,与磁卡上的特征数
后面n行按字典序数出一个01序列,表识每个人磁卡上的拥有的特征,1表识有,0表示没有。
Problem6堆塔问题
题目描述
有n个边长为一的正立方体,在一个宽为1的轨道上堆塔,但它本身不能分离。
堆塔时底层必须有支撑,求对于n各正方体,又多少种方案
输入
输入仅一行n(n<=100)
输出
输出也只一行,即总方案数
Problem7取数游戏
题目描述
给出正整数n(<=1000000)和k(<n),然后按下列方法取数:(n=16,k=4)
1: 取1 剩 15
2: 取2 剩 13
3: 取4 剩 9
4: 取8 剩 1
第五次取不够,加上k个,现在共5个
5: 取1 剩 4
6: 取2 剩 2
第七次取不够,加上k个,现在共6个
7: 取1 剩 5
8: 取2 剩 3
第九次取不够,加上k个,现在共7个
9: 取1 剩 6
10: 取1 剩 4
11: 取1 剩 0
取完共取11次
输入
输入仅一行,即n,k
输出
若取得完,则输出取的次数,否则输出‘Error’
Problem8球迷购票
题目描述
球迷手上有100元与50元的钞票,每张票50元,现在有m+n个球迷买票(m个手上持50元的,n个手上持100元的),一开始售票员手上有钱,有多少排队方案可以不出现没有钱找的局面
输入
输入仅一行即m,n(m,n<=5000)
输出
输出有一行,即总得方案数
Problem9 Fibonacci公约数
题目描述
给出两个fibonacci数,求一个最大的fibonacci数,满足这个数是他们的最大公约数
输入
输入有两行,分别是两个Fibonacci数(<=10^2000)
输出
即输出他们的Fibonacci公约数
Problem10传球问题
题目描述
Grant老师常和小朋友们一起玩一种传球游戏。游戏是这样进行的:
一群小朋友分成两组,每组n人,围成一个圈。每一个小朋友都有一个编号(1..n之间),这个编号在其所在组中是唯一的。 游戏开始之前,Grant老师会发给每个小朋友一个球,球上也有编号(1..n之间),并且一个组中的球不会有两个相同编号。然后,所有小朋友必须闭上眼睛,游戏开始。随着Grant老师口中的哨子发出的节奏,每个小朋友都用一只手把球传到右边,而用另一只手接左边的来球。
突然,Grant老师的哨子停了,关键的时刻到了。小朋友马上睁开眼睛,开始与同组的小朋友之间进行传球,争取以最短的时间把球传到位。传到位是指一个组中的每一个小朋友手上的球的编号与他自己的编号相同。最后获胜的就是那个最先把球传到位的组。如果一旦哪方出现传球失误(球没被接到而落地),或犯规(一个人手上拿两个或两个以上的球)这一组就被判输。
这个游戏非常有趣,小朋友们玩了许多次。他们总结出一条经验:总是两个人之间对传。也就是说,不会出现a把球传给b,而b没有把球传给a的这种情况。这样可以避免小朋友之间的失误与犯规。不过还有个关键问题就是怎么传。究竟应该把手上的球传给谁?
现在需要你编一个程序来帮助小朋友们确定传球方法。你的程序首先需要计算出从一种初始状态开始:
子问题 1:至少需要几次对传才能将球传到位。
子问题2:至少需要多少时间才能将球传到位。每一个时间单位一个小朋友可以不做任何动作,也可以与另外一个小朋友之 间进行对传。
注意有些对传可以同时进行。比如小朋友1与小朋友2之间的对传和小朋友3与小朋友4之间的对传就可以在一个时间单位之内完成,但是被计作两次对传。
输入:
输入第一行是一个整数 n (2<=n<=20000)。接下来有n 行,每行一个整数(1..n),其中第(i+1)行的整数表示i号小朋友手上的球的编号。
输出:
输出只有二行,每行一个整数,分别表示子问题1和子问题2的解。
Problem11约瑟夫问题
题目描述
n个人排成一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针“一二一”报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。由于人的个数是有限的,因此最终会剩下一个人。试问最后剩下的人最开始的编号。
输入
输入一个正整数n,表示人的个数。输入数据保证数字n不超过100位。
输出
输出一个正整数。它表示经过“一二一”报数后最后剩下的人的编号。
Problem12青蛙过河
题目描述
大小各不相同的一队青蛙站在河左岸的石墩(记为A)上,要过到对岸的石墩(记为D)上去。河心有几片菏叶(分别记为Y1…Ym)和几个石墩(分别记为S1…Sn)。
青蛙的站队和移动方法规则如下:
1.每只青蛙只能站在荷叶、石墩,或者仅比它大一号的青蛙背上(统称为合法的落脚点);
2.一只青蛙只有背上没有其它青蛙的时候才能够从一个落脚点跳到另一个落脚点;
3.青蛙允许从左岸A直接跳到河心的石墩、荷叶和右岸的石墩D上,允许从河心的石墩和荷叶跳到右岸的石墩D上;
4.青蛙在河心的石墩之间、荷叶之间以及石墩和荷叶之间可以来回跳动;
5.青蛙在离开左岸石墩后,不能再返回左岸;到达右岸后,不能再跳回;
6.假定石墩承重能力很大,允许无论多少只青蛙都可呆在上面。但是,由于石墩的面积不大,至多只能有一只青蛙直接站在上 面,而其他的青蛙只能依规则1落在比它大一号的青蛙的背上。
7.荷叶不仅面积不大,而且负重能力也有限,至多只能有一只青蛙站在上面。
8.每一步只能移动一只青蛙,并且移动后需要满足站队规则;
9.在一开始的时候,青蛙均站在A上,最大的一只青蛙直接站在石墩上,而其它的青蛙依规则6站在比其大一号的青蛙的背上。
青蛙希望最终能够全部移动到D上,并完成站队。
设河心有m片荷叶和n个石墩,请求出这队青蛙至多有多少只,在满足站队和移动规则的前提下,能从A过到D。
输入
输入仅有两行,每一行仅包含一个整数和一个换行/回车符。第一行的数字为河心的石墩数n(0<=n<=25),第二行为荷叶数m(0<=m<=25)。
输出
输出中仅包含一个数字和一个换行/回车符。该数字为在河心有n个石墩和m片荷叶时,最多能够过河的青蛙的只数。
Problem13棋盘游戏
题目描述
大小为3的棋盘游戏里有3个白色棋子,3个黑色棋子,和一个有7个格子一线排开的木盒子。3个白棋子被放在一头,3个黑棋子被放在另一头,中间的格子空着。
初始状态: WWW_BBB
目标状态: BBB_WWW
在这个游戏里有两种移动方法是允许的:
1. 你可以把一个棋子移到与它相邻的空格;
2. 你可以把一个棋子跳过一个(仅一个)与它不同色的棋子到达空格。
大小为N的棋盘游戏包括N个白棋子,N个黑棋子,还有有2N+1个格子的木盒子。
这里是3-棋盘游戏的解,包括初始状态,中间状态和目标状态:
WWW BBB
WW WBBB
WWBW BB
WWBWB B
WWB BWB
W BWBWB
WBWBWB
BW WBWB
BWBW WB
BWBWBW
BWBWB W
BWB BWW
B BWBWW
BB WBWW
BBBW WW
BBB WWW
请编一个程序解大小为N的棋盘游戏(1 <= N <= 12)。要求用最少的移动步数实现。
输入
输入仅一个整数N。
输出
用空格在棋盘的位置(位置从左到右依次为1, 2, ..., 2N+1)表示棋盘的状态。输出棋盘的状态变换序列,每行20个数(除了最后一行)。
输出的解还应当有最小的字典顺序(即如果有多组移动步数最小的解,输出第一个数最小的解;如果还有多组,输出第二个数最小的解;...)。