2006年安徽省安联杯信息学奥林匹克竞赛(第1试).doc

2006年安徽省安联杯信息学奥林匹克竞赛(第1试).doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2006年安徽省安联杯信息学奥林匹克竞赛(第1试)

2006年安徽省安联杯信息学奥林匹克竞赛 AHOI 2006 第一试 比赛时间:2006年4月15日8:00至11:00 题目名称 斐波卡契的兔子 基因匹配 梦游超空间 可执行文件名 kacci.exe match.exe hyper.exe 输入文件名 kacci.in match.in hyper.in 输出文件名 kacci.out match.out hyper.out 试题类型 传统型 传统型 传统型 满分 100 100 100 是否有部分分 是 否 是 时限 3秒 1秒 2秒 注意事项 务必看清题目,严格按照所要求的格式输入、输出。 在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。 测试有严格的时间限制,请尽可能优化算法。 命名规则: (1)每题都规定了该题的英文名称。 (2)程序文件和数据文件的主文件名都是该题的英文名字。 (3)程序文件扩展名采用语言环境的默认扩展名。 (4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。 程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中。输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在目录是不确定的,因此不允许在程序中含有盘符信息和任何形式的路径信息。 选手在竞赛结束时应在硬盘指定位置建立以参赛号命名的文件夹,并将所完成各题的源程序文件和编译所产生的可执行文件(即扩展名为.exe的文件)拷贝到该文件夹中。 题目 斐波卡契的兔子(Kacci) 最近,卡卡开始玩一个叫《牧场物语》的网络游戏,在游戏中卡卡办了一个养兔场!开始的时候他只有一对刚出生的兔子,经过一段时间的饲养,卡卡了解到兔子的繁殖规律是这样的:才出生的一对兔子在一个月后将第一次生出一胎a对兔子,接着在出生后的二个月又将生出b对兔子,在第三个月和以后每个月都会繁殖c对兔子(a = b = c,其中0=a = b = c=100)。 由于繁殖的过程类似于斐波纳契数列,所以卡卡给它的养兔场取名叫“斐波卡契”。繁殖出的兔子都是可以到市场上卖的,但是游戏中限定一个玩家只能买一对兔子,现在已知有k个玩家,卡卡想在m个月后让他们每个人都能买到一对,他的愿望是否能够实现呢?(1=m=3 000, 1=k=106 000)(题目中每对兔子均为一公一母) 任务:编写一个程序: 从输入文件中读入输入信息; 计算m个月后卡卡将有多少对兔子,设之为P; 计算如果m个月后卡卡要拥有至少k对兔子,那么开始时他至少应该有多少对兔子,设之为Q; 将结果输出至输出文件。 输入:输入文件的第一行有4个由一个空格隔开的正整数:a, b, c和m;而第二行则仅含一个正整数k。它们的含义见上文描述。 输出:你的程序将向输出文件输出两行,第一行是一个整数P,第二行是一个整数Q,它们的含义见上文描述。 样例: 输入: 0 1 1 10 10000 输出: 89 113 评分方法: 本题设有部分分,对于每一个测试点: 若你的程序输出的第一行P正确,则你的程序可以获得该测试点60%的分数; 若你的程序输出完全正确,则你的程序可以获得该测试点100%的分数。 注意在你的程序输出的每一行中不应该有多余的字符,数字前不应有前导0,否则可能影响到你的得分! 基因匹配(Match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球上只有4种),而更奇怪的是,组成DNA序列的每一种碱基在该序列中正好出现5次!这样如果一个DNA序列有N种不同的碱基构成,那么它的长度一定是5N。 卡卡醒来后向可可叙述了这个奇怪的梦,而可可这些日子正在研究生物信息学中的基因匹配问题,于是他决定为这个奇怪星球上的生物写一个简单的DNA匹配程序。 为了描述基因匹配的原理,我们需要先定义子序列的概念:若从一个DNA序列(字符串)s中任意抽取一些碱基(字符),将它们仍按在s中的顺序排列成一个新串u,则称u是s的一个子序列。对于两个DNA序列s1和s2,如果存在一个序列u同时成为s1和s2的子序列,则称u是s1和s2的公共子序列。 卡卡已知两个DNA序列s1和s2,求s1和s2的最大匹配就是指s1和s2最长公共子序列的长度。 任务:编写一个程序: 从输入文件中读入两个等长的DNA序列; 计算它们的最大匹配; 向输出文件打印你得到的结果。 输入:输入文件中第一行有一个整数N,表示这个星球上某种生物使用了N种不同的碱基,以后将它们编号为1…N的整数。 以下还有两行,每行描述一个DNA序列:包含5N个1…N的整数,整数之间由一个空格隔开,且每一个整数在对应的序列中正好出现5次。 输出:输出文件中只有一个整数,即两个DNA序列的最大匹配数目。 样例: 输入: 2

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档