信息学奥赛试题题.doc

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1~10题为基础题,第11~20题为提高题,第21~33为综合题 注:因为在本文档中需要用到一些特殊的数学符号(如:求和号、分数等),所以当您在百度文库中浏览时,一些数学符号可能会显示不出来,不过当您把本文档下载下来在本地浏览时,所有的符号即可全部都显示出来。^_^ 基础题: 【1 Prime Frequency】 【问题描述】 给出一个仅包含字母和数字(0-9, A-Z 以及 a-z)的字符串,请您计算频率(字符出现的次数),并仅报告哪些字符的频率是素数。 输入: 输入的第一行给出一个整数T ( 0<T<201),表示测试用例个数。后面的T行每行给出一个测试用例:一个字母-数字组成的字符串。字符串的长度是小于2001的一个正整数。 输出: 对输入的每个测试用例输出一行,给出一个输出序列号,然后给出在输入的字符串中频率是素数的字符。这些字符按字母升序排列。所谓“字母升序”意谓按ASCII 值升序排列。如果没有字符的频率是素数,输出“empty”(没有引号)。 样例输入 样例输出 3 ABCC AABBBBDDDDD ABCDFFFF Case 1: C Case 2: AD Case 3: empty 注: 试题来源:Bangladesh National Computer Programming Contest 在线测试:UVA 10789 提示 先离线计算出[2‥2200]的素数筛u[]。然后每输入一个测试串,以ASCLL码为下标统计各字符的频率p[],并按照ASCLL码递增的顺序(0≤i≤299)输出频率为素数的字符(即u[p[i]]=1且ASCLL码值为i的字符)。若没有频率为素数的字符,则输出失败信息。 【2 Twin Primes】 【问题描述】 双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul St?ckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。在本题中请你给出第S对双素数,其中S 是输入中给出的整数。 输入: 输入小于10001行,每行给出一个整数S (1≤ S≤ 100000),表示双素数对的序列编号。输入以EOF结束。 输出: 对于输入的每一行,输出一行,给出第S对双素数。输出对的形式为(p1,空格p2),其中“空格”是空格字符(ASCII 32)。本题设定第100000对的素数小于。 样例输入 样例输出 1 2 3 4 (3, 5) (5, 7) (11, 13) (17, 19) 注: 试题来源:Regionals Warmup Contest 2002, Venue: Southeast University, Dhaka, Bangladesh 在线测试:UVA 10394 提示 设双素数对序列为ans[]。其中ans[i]存储第i对双素数的较小素数(1≤i≤num)。ans[]的计算方法如下: 使用筛选法计算出[2,]的素数筛u[]; 按递增顺序枚举该区间的每个整数i:若i和i+2为双素数对(u[i]&&u[i+2]),则双素数对序列增加一个元素(ans[++num]=i)。 在离线计算出ans[]的基础上,每输入一个编号s,则代表的双素数对为(ans[s],ans[s]+2)。 【3 Less Prime】 【问题描述】 设n为一个整数,100≤n≤10000,请找到素数x,x ≤ n,使得n-p*x最大,其中 p是整数,使得p*x≤n<(p+1)*x。 输入: 输入的第一行给出一个整数M,表示测试用例的个数。每个测试用例一行,给出一个整数N,100≤N≤10000。 输出: 对每个测试用例,输出一行,给出满足上述条件的素数。 样例输入 样例输出 5 4399 614 8201 101 7048 2203 311 4111 53 3527 注: 试题来源:III Local Contest in Murcia 2005 在线测试:UVA 10852 提示 要使得n-p*x最大(x为素数,p为整数,p*x ≤ n<(p+1)*x),则x为所有小于n的素数中,被n除后余数最大的一个素数。由此得出算法: 先离线计算出[2‥11111]的素数表su[],表长为num。然后每输入一个整数n,则枚举小于n的所有素数,计算tmp=,满足条件的素数即为对应tmp=n%su[k]的素数su[k]。 【4 Prime Words】 【问题描述】 一个素数是仅有两个约数的数:其本身和数字1。例如,1, 2, 3, 5, 17, 101和10007是素数。 本题输入一个单词集合,每个单词由a-z以及A-Z的字母组成。每个字母对应一个特定的值,字母

文档评论(0)

178****4446 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档