NOIP2009提高组复赛题解

上传人:re****.1 文档编号:397351116 上传时间:2023-12-08 格式:DOC 页数:65 大小:180KB
返回 下载 相关 举报
NOIP2009提高组复赛题解_第1页
第1页 / 共65页
NOIP2009提高组复赛题解_第2页
第2页 / 共65页
NOIP2009提高组复赛题解_第3页
第3页 / 共65页
NOIP2009提高组复赛题解_第4页
第4页 / 共65页
NOIP2009提高组复赛题解_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《NOIP2009提高组复赛题解》由会员分享,可在线阅读,更多相关《NOIP2009提高组复赛题解(65页珍藏版)》请在金锄头文库上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateNOIP2009提高组复赛题解NOIP2009提高组复赛题解NOIP2009提高组复赛题解(1)2010-02-21 19:381. 潜伏者(spy.pas/c/cpp)【问题描述】R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则:1、 S国军方内部欲发送的原信息经过加密后在网络上发

2、送,原信息的内容与加密后所的内容均由大写字母AZ构成(无空格等其他字母)。2、 S国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中的所有字母替换为其对应的“密字”。3、 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。“密字”可以和原字母相同。例如,若规定A的密字为A,B的密字为C(其他字母及密字略),则原信息“ABA”被加密为“ACA”。现在,小C通过内线掌握了S国网络上发送的一条加密信息及其对应的原信息。小C希望能通过这条信息,破译S国的军用密码。小C的破译过程是这样的:扫描原信息,对于原信息中的字母x(代表任一大写字母),找到其在加密信息中的对应大写字母y,并

3、认为在密码里y是x的密字。如此进行下去直到停止于如下的某个状态:1、 所有信息扫描完毕,AZ所有26个字母在原信息中均出现过并获得了相应的“密字”。2、 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。3、 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反S过密码的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。在小C忙得头昏脑胀之际,R国司令部又发来电报,要求他翻译另外一条从S国刚刚截取到的加密信息。现在请你帮助小C:通过内线掌握的信息,尝试破译密码。然后利用破译的密码,翻译电报中的加密信息。【输入】输入文件名为spy.in,共

4、3行,每行为一个长度在1到100之间的字符串。第1行为小C掌握的一条加密信息。第2行为第1行的加密信息所对应的原信息。第3行为R国司令部要求小C翻译的加密信息。输入数据保证所有字符串仅由大写字母AZ构成,且第1行长度与第2行相等。【输出】输出文件spy.out共1行。若破译密码停止时出现2,3两种情况,请你输出“Failed”(不含引号,注意首字母大写,其它小写)。否则请输出利用密码翻译电报中加密信息后得到的原信息。【输入输出样例1】spy.inspy.outAAABEOWIEFailed【输入输出样例1说明】原信息中的字母A和B对应相同的密字,输出“Failed”。【输入输出样例2】spy.

5、inspy.outQWERTYUIOPLKJHGFDSAZXCVBNABCDEFGHIJKLMNOPQRSTUVWXYDSLIEWOFailed【输入输出样例2说明】字母Z在原信息中没有出现,输出“Failed”。【输入输出样例3】spy.inspy.outMSRTZCJKPFLQYVAWBINXUEDGHOOILSMIJFRCOPPQCEUNYDUMPPYIZSDWAHLNOVFUCERKJXQMGTBPPKOIYKANZWPLLVWMQJFGQYLLFLSONOIP 这个题.就不说了吧,需要注意的是不仅要判断一个密字对应多个原信息的情况,还要判断一个原信息对应多个密字的情况。如:原信息 A

6、A,密字 AB;和 原信息 AB,密字 AA, 这两种情况是不同的,要分别判断。附程序:program spy(input,output);vara,b:arrayA.Z of char;st1,st2,st3:string;i,j,n:integer;ch:char;procedure work;beginwriteln(Failed);close(input);close(output);halt;end;beginassign(input,spy.in);assign(output,spy.out);reset(input);rewrite(output);readln(st1);rea

7、dln(st2);readln(st3);n:=length(st1);for ch:=A to Z do begin ach:=#; bch:=#; end;for i:=1 to n do if (ast1i=#) and (bst2i=#) or (ast1i=st2i) then begin ast1i:=st2i; bst2i:=; end else work;for ch:=A to Z do if bch=# then work;for i:=1 to length(st3) do write(ast3i);writeln;close(input);close(output);e

8、nd.NOIP2009提高组复赛题解(2)2010-02-21 19:572. Hankson的趣味题(son.pas/c/cpp)【问题描述】Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson。现在,刚刚放学回家的Hankson正在思考一个有趣的问题。今天在课堂上,老师讲解了如何求两个正整数c1和c2的最大公约数和最小公倍数。现在Hankson认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数a0,a1,b0,b1,设某未知正整数x满足:1、 x和a0的最大公约数是a1;2、

9、x和b0的最小公倍数是b1。Hankson的“逆问题”就是求出满足条件的正整数x。但稍加思索之后,他发现这样的x并不唯一,甚至可能不存在。因此他转而开始考虑如何求解满足条件的x的个数。请你帮助他编程求解这个问题。【输入】 输入文件名为son.in。第一行为一个正整数n,表示有n组输入数据。接下来的n行每行一组输入数据,为四个正整数a0,a1,b0,b1,每两个整数之间用一个空格隔开。输入数据保证a0能被a1整除,b1能被b0整除。【输出】输出文件son.out共n行。每组输入数据的输出结果占一行,为一个整数。对于每组数据:若不存在这样的x,请输出0;若存在这样的x,请输出满足条件的x的个数;【

10、输出输出样例】son.inson.out241 1 96 28895 1 37 177662【说明】第一组输入数据,x可以是9、18、36、72、144、288,共有6个。第二组输入数据,x可以是48、1776,共有2个。【数据范围】对于50%的数据,保证有1a0,b1,b0,b110000且n100。对于100%的数据,保证有1a0,b1,b0,b12,000,000,000且n2000。 这是一道数论题,本人数论很弱,这道题虽然A了但也不是很清楚,就不说了吧,直接贴程序。program son(input,output);Const p:array1.5133 of longint=(.)

11、; p是素数表,从2开始一共5133个素数,百度空间发表不了那么长的文章,在这就不打了varn,i,a1,a0,b1,b0:longint;procedure work;vari,x1,x2,tt,aa,bb,ans,c:longint;begintt:=b1 div a1;aa:=a0 div a1;bb:=b1 div b0;if b1 mod a10 then begin writeln(0);exit; end;ans:=1;i:=1;while (i=5133) and (pi*pi=tt) do if tt mod pi=0 then begin x1:=aa mod pi;x2:

12、=bb mod pi; if (x1=0) and (x2=0) then begin writeln(0);exit; end; c:=0; while tt mod pi=0 do begin inc(c); tt:=tt div pi; end; if (x10) and (x20) then ans:=ans*(c+1); end else inc(i);if tt1 then begin x1:=aa mod tt;x2:=bb mod tt; if (x1=0) and (x2=0) then begin writeln(0);exit; end; if (x10) and (x2

13、0) then ans:=ans*2; end;writeln(ans);end;beginassign(input,son.in);assign(output,son.out);reset(input);rewrite(output);readln(n);for i:=1 to n do begin readln(a0,a1,b0,b1); work; end;close(input);close(output);end.NOIP2009提高组复赛题解(3)2010-02-21 20:223. 最优贸易(trade.pas/c/cpp)【问题描述】C国有n个大城市和m条道路,每条道路连接这n

14、个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1条。C国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。商人阿龙来到C国旅游。当他得知同一种商品在不同城市的价格可能会不同这一信息之后,便决定在旅游的同时,利用商品在不同城市中的差价赚回一点旅费。设C国n个城市的标号从1-n,阿龙决定从1号城市出发,并最终在n号城市结束自己的旅行。在旅游的过程中,任何城市可以重复经过多次,但不要求经过所有n个城市。阿龙通过这样的贸易方式赚取旅费:他会

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号