ACM编程比赛入门题目集(6)

2019-08-26 17:53

速配游戏

Time limit: 5s Memory limit: 32768K

Total Submit : 295 Accepted Submit : 209

【问题描述】

有这么一个速配电视节目。N位男士和N位女士要在摄像机前选出他们合适的伴侣。每位女士按照其对每位男士作为配偶的偏爱程度给每位男士排名次,每位男士也按照其对每位女士作为配偶的偏爱程度给每位女士排名次。这些名次不允许并列。然后每位男士将向心仪的对象求婚,经过\残酷\的竞争之后各自找到适合的伴侣。

最开始的时候每位男士都还没有被任何一位女士拒绝。求婚环节会经过很多轮进行,每一轮: (1) 每位男士向还没有拒绝过自己的女士中选出自己认为最理想的一个,并向她求婚 (2) 每位女士在所有这一轮中向她求婚的男士中选出自己认为最理想的一个,并不答应,也不拒绝。她把其余向她求婚的男士都婉言拒绝掉。经过了若干轮求婚之后,在某一轮,幸运的事情发生了:所有的女士都恰好有一个求婚者,所有的男士都找到一个心仪的对象。主持人将继续指出这个配对方式的神奇之处:没有任意的两个配对,比方说男士A和女士a配对,男士B和女士b配对,使得在A心目中b较a更理想,而且在b心目中A较B更理想(这样A和b就会\私奔\)。因此,主持人总结说,这个配对是非常合理的。(他知道,这种情况是一定会发生的。) 主持人在节目之前已经知道男士和女士之间的偏爱情况,他想预先知道最后的匹配结果是怎么样的,你能帮帮他吗?

【要求】 【数据输入】第一行包括一个数字N(1<=N<=1000)以下N*2行,每行有N个数字。第i+1行(1<=i<=N)表示编号为i的男士对女士们的排序(从最喜欢的到最不喜欢的)。第N+j+1行(1<=j<=N)表示编号为j的女士对男士们的排序(同样从最喜欢的到最不喜欢的)。

【数据输出】N行,每行包括一个数字。第i行的数字表示与编号为i的男士匹配的女士的编号。

【样例输入】 3 1 2 3 2 3 1 2 1 3 3 2 1 2 3 1

2 3 1

【样例输出】 3 2 1

3n+1数链问题

Time limit: 1s Memory limit: 32768K

Total Submit : 471 Accepted Submit : 325

【问题描述】

在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况我们并不知道哪一类问题可以解决,那一类问题不可解决。现在我们就有这样一个问题,问题如下:

1. 输入一个正整数n; 2. 把n显示出来; 3. 如果n=1则结束;

4. 如果n是奇数则n变为 ,否则n变为n/2; 5. 转入第2步。

例如对于输入的正整数22,应该有如下数列被显示出来:

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1,000,000的正整数都满足以上推断。对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。

你的任务是编写一个程序,对于任意一对正整数i和j,给出i、j之间的最长链长,当然这个最长链长是由i、j之间的其中一个正整数产生的。我们这里的i、j之间即包括i也包括j。

【要求】

【数据输入】输入文件只有一行,即为正整数i和j,i和j之间以一个空格隔开。 0 < i ≤ j < 10,000。

【数据输出】文件只能有一行,即为i、j之间的最长链长。

【样例输入】 1 10

【样例输出】 20

数制转换

Time limit: 1s Memory limit: 32768K

Total Submit : 479 Accepted Submit : 190

【问题描述】

有一种数制的基数是3,权值可以取-1,0,1,并分别用符号-,0,1表示,如这种数制的101表示十进制数的10,即1*(3^2)+0*(3^1)+1*(3^0)=10,又如这种数制的-0 表示十进制数的-3,即-1*(3^1)+0*(3^0)=-3。编程要求把给定的有符号整数转换为新数制的数,该数的前面不能有多余的0,如10的新数制表示是101,则不要输出成0101。

【要求】

【数据输入】文件有一行或多行,每行有一个整数N (-2,147,483,647≤N≤2,147,483,647),整数内不会有其他分隔符。

【数据输出】对输入文件的每一行输出一行,该行是输入行的整数的新数制表示,不能有多余空行,每行之前不能有前导空格。

【样例输入】 10 -3

【样例输出】 101 -0

数列

Time limit: 1s Memory limit: 32768K

Total Submit : 415 Accepted Submit : 226

【问题描述】

给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,? (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,?) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。

【要求】

【数据输入】输入包含多个测试数据。

每个测试数据只有1行,为2个正整数,用一个空格隔开:k N

(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)

【数据输出】对于每个测试数据输出一个正整数(在所有的测试数据中,结果均不超过2.1*109)。

【样例输入】 3 100 3 100

【样例输出】 981 981

2^k进制数

Time limit: 1s Memory limit: 32768K Total Submit : 110 Accepted Submit : 28

【问题描述】

设r是个2k 进制数,并满足以下条件:

(1)r至少是个2位的2k 进制数。

(2)作为2k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。 (3)将r转换为2进制数q后,则q的总位数不超过w。

在这里,正整数k(1≤k≤9)和w(k

我们再从另一角度作些解释:设S是长度为w 的01字符串(即字符串S由w个“0”或“1”组成),S对应于上述条件(3)中的q。将S从右起划分为若干个长度为k 的段,每段对应一位2k进制的数,如果S至少可分成2段,则S所对应的二进制数又可以转换为上述的2k 进制数r。

例:设k=3,w=7。则r是个八进制数(23=8)。由于w=7,长度为7的01字符串按3位一段分,可分为3段(即1,3,3,左边第一段只有一个二进制位),则满足条件的八进制数有: 2位数:高位为1:6个(即12,13,14,15,16,17),高位为2:5个,?,高位为6:1个(即67)。共6+5+?+1=21个。 3位数:高位只能是1,第2位为2:5个(即123,124,125,126,127),第2位为3:4个,?,第2位为6:1个(即167)。共5+4+?+1=15个。 所以,满足要求的r共有36个。

【要求】

【数据输入】输入包含多个测试数据,每个测试数据只有1行,为两个正整数,用一个空格隔开:k W

【数据输出】对于每个测试数据,输出一行,是一个正整数,为所求的计算结果,即满足条件的不同的r的个数(用十进制数表示),要求最高位不得为0,各数字之间不得插入数字以外的其他字符(例如空格、换行符、逗号等)。 (提示:作为结果的正整数可能很大,但不会超过200位)

【样例输入】 3 7

3 7

【样例输出】 36 36


ACM编程比赛入门题目集(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江省嘉兴一中2011-2012学年上学期高二年级10月月考物理试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: