一、实操题
1、级数求和
[问题描述]:
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
[输入]
键盘输入 k
[输出]
屏幕输出 n
[输入输出样例]
输人:1
输出:2
参考答案:对于输入的整数K,我们可以使用二分查找法来求解最小的n,使得Sn>K。具体步骤如下:1. 初始化left=1,right=15,表示n的取值范围。2. 计算mid=(left+right)/2,mid即为当前猜测的n值。3. 计算Smid=1+1/2+1/3+...+1/mid,即前mid项的和。4. 如果Smid>K,说明当前的n值偏大,将right更新为mid;否则,说明当前的n值偏小,将left更新为mid+1。5. 重复步骤2-4,直到left>right,此时left即为最小的n值。
2、选数
[问题描述]:
已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。
现在,要求你计算出和为素数共有多少种。
例如上例,只有一种的和为素数:3+7+19=29)。
[输入]:
键盘输入,格式为:
n , k (1<=n<=20,k<n)
x1,x2,…,xn (1<=xi<=5000000)
[输出]:
屏幕输出,格式为:
一个整数(满足条件的种数)。
[输入输出样例]:
输入:
4 3
3 7 12 19
输出:
1
参考答案:输入样例:4 33 7 12 19输出样例:1
3、产生数
[问题描述]:
给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15)。
规则:
一位数可变换成另一个一位数:
规则的右部不能为零。
例如:n=234。有规则(k=2):
2-> 5
3-> 6
上面的整数 234 经过变换后可能产生出的整数为(包括原数):
234
534
264
564
共 4 种不同的产生数
问题:
给出一个整数 n 和 k 个规则。
求出:
经过任意次的变换(0次或多次),能产生出多少个不同整数。
仅要求输出个数。
[输入]:
键盘输人,格式为:
n k
x1 y1
x2 y2
... ...
xn yn
[输出]:
屏幕输出,格式为:
一个整数(满足条件的个数):
[输入输出样例]:
输入:
234 2
2 5
3 6
输出:
4
参考答案:根据给定的规则,我们需要对整数n进行变换,并统计能够产生的不同整数的个数。
4、过河卒
[问题描述]:
如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。
棋盘用坐标表示,A 点(0,0)、B 点(n,m)(n,m 为不超过 20 的整数,并由键盘输入),同样马的位置坐标是需要给出的(约定: C<>A,同时C<>B)。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数。
[输入]:
键盘输入
B点的坐标(n,m)以及对方马的坐标(X,Y){不用盘错}
[输出]:
屏幕输出
一个整数(路径的条数)。
[输入输出样例]:
输入:
6 6 3 2
输出:
17
参考答案:根据题目描述,卒只能向下或向右移动,且不能通过对方马的控制点。因此,我们需要使用深度优先搜索(DFS)算法来遍历所有可能的路径,并计算路径的条数。首先,我们需要定义一个二维数组来表示棋盘,数组的每个元素表示一个点的状态(是否被访问过)。然后,我们可以从A点开始,沿着向下或向右的方向移动,直到到达B点或者无法继续移动为止。在遍历过程中,我们需要判断当前点是否在对方马的控制点内,如果是,则不能继续移动。否则,我们可以继续向下或向右移动,并更新当前点的状态为已访问。最后,我们统计所有能够到达B点的路径条数,并输出结果。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!