计算机程序算法试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 数字分解

Time limit: 1 Seconds Memory limit: 32768K

描述Description

今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:

设有一个长度N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。

同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

有一个数字串: 312,当N=3,K=1时会有以下两种分法:

1)3*12=36

2)31*2=62

这时,符合题目要求的结果是:31*2=62

现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。

输入格式Input Format

程序的输入共有两行:

第一行共有2个自然数N,K (6<=N<=40,1<=K<=6)

第二行是一个K度为N的数字串。

输出格式Output Format

屏幕输出(结果显示在屏幕上),相对于输入,应输出所求得的最大乘积(一个自然数)。

样例输入Sample Input

4 2

1231

样例输出Sample Output

62

时间限制Time Limitation

1 second

来源Source

NOIP 2000年

2. 回文

Time Limit: 1 Second Memory Limit: 32768 KB

描述Description

回文词是一种对称的字符串——也就是说,一个回文词,从左到右读和从右到左读得到的结果是一样的。任意给定一个字符串,通过插入若干字符,都可以变成一个回文词。你的任务是写一个程序,求出将给定字符串变成回文词所需插入的最少字符数。

比如字符串“Ab3bd”,在插入两个字符后可以变成一个回文词(“dAb3bAd”或“Adb3bdA”)。然而,插入两个以下的字符无法使它变成一个回文词。

输入格式Input Format

第一行包含一个整数N,表示给定字符串的长度,3<=N<=5000 第二行是一个长度为N的字符串,字符串由大小写字母和数字构成。

输出格式Output Format

一个整数,表示需要插入的最少字符数。

样例输入Sample Input

5

Ab3bd

样例输出Sample Output

2

时间限制Time Limitation

各个测试点1s

来源Source

IOI 2000 by Zossin

3.看球的巴士

描述Description

两个球队的支持者要一起坐车去看球,他们已经排成了一列。我们要让他们分乘若干辆巴士,同一辆巴士上的人必须在队伍中是连续的。为了在车上不起冲突,希望两队的支持者人数尽量相等,差至多是D。有一个例外,就是一辆车上的人全部都是一个球队的支持者。问要将这N个人全部送至球场,至少要几辆巴士。

输入格式Input Format

第一行是整数N和D,1<=N<=2500,1<=D<=N。

接下来的N行,按排队的顺序,描述每个人支持的球队,用H或J表示。

输出格式Output Format

至少要几辆巴士。

样例输入Sample Input

14 3

H

J

H

H

H

J

H

J

H

H

H

H

H

H

样例输出Sample Output

2

时间限制Time Limitation

1 second

注释Hint

有多种方案,例如让前9人做一辆车,差正好是3;后5人做一辆车,因为只有一对的支持者。

4. 伪随机数

Time Limit: 1 Second Memory Limit: 32768 KB

计算机通常不能产生真正的随机数,但是经常使用计算机来产生伪随机数。由于实际应用,通过算法使得伪随机数成为真随机数。随机数应用广泛,包括在仿真领域。

伪随机数生成时用的最普遍的是线性同余法。如果上一次生成的伪随机数是L,那么接下来的伪随机数通过(z*L+ I)mod M产生,这里的Z是一个常数乘法器,I是常数增量,M是常量模数。例如,假设Z=7 ,I=5,M = 12,第一个随机数(通常叫做种子)是4,那么我们可以得到后续的伪随机数,如下表所示:

通过上表我们可以看出,通过这个方法产生的随机数序列在6个数字以后会重复。显然,由于模数M,用这个方法能产生的最长序列是有限的。

通过给出的Z, I, M, 和种子L,(Z,I,M,L < 10000),我们确定产生的伪随机数序列的重复周期。注意重复周期不一定从种子L开始。

Input

每行有四个数字,依次是Z, I, M, 和L,其中L< M. 最后一行是4个0,表示输入数据的结束。

Output

对于输入的每行,输出伪随机数序列的重复周期

Sample Input

7 5 12 4

5173 3849 3279 1511

9111 5309 6000 1234

1079 2136 9999 1237

0 0 0 0

Sample Output

Case 1: 6

Case 2: 546

Case 3: 500

相关文档
最新文档