欢迎来到天天文库
浏览记录
ID:49629375
大小:965.00 KB
页数:37页
时间:2020-02-26
《NOIP2008提高组复赛题解.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、NOIP2008提高组复赛题解河南省实验中学彭勃题目描述:笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个LuckyWord,这样的单词很可能就是正确的答案。第一题笨小猴输入格式:输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于10
2、0。输出格式:输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是LuckyWord,那么输出“LuckyWord”,否则输出“NoAnswer”;第二行是一个整数,如果输入单词是LuckyWord,输出maxn-minn的值,否则输出0。样例1输入:error输出:LuckyWord2解释:单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。样例2输入:olymipic输出:NoAnswer0解释:单词olympic中出现最多的字母i出现了2次,出现次数最少
3、的字母出现了1次,2-1=1,1不是质数。思路:统计单词中每个字母的出现次数,挑出最多的次数和最少的次数(不包括0次),相减判断是否为质数即可。判断质数时可以写函数判断,也可以把100以内的质数列成常量数组直接判断,因为单词最多只有100个字母。需要注意的是输出时的LWNA四个字母要大写。总结:这是一道送分题,没有什么难度,需要注意的细节也不多,所以在比赛中是一定要拿满分的。参考样程#include#include#include#defineI_F"word.in
4、"#defineO_F"word.out"using namespace std;string s;shortans;void Input();void Search();boolPd();void Output();intmain(){ Input(); Search(); Output(); return 0;}void Input(){ifstreamfin(I_F); fin>>s;fin.close();}void Search()
5、//统计字母出现次数{ short i, max=0, min=200; short f[26]={0}; for (i=0; i0) { if (f[i]>max) max=f[i]; if (f[i]6、]; }ans=max-min;}void Output(){ofstreamfout(O_F); if (Pd())fout<<"LuckyWord"<7、f (ans%2==0) return false; else for (short i=3; i<=sqrt((double)ans); i+=2) if (ans%i==0) return false; return true;}问题描述:给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:(图略)注8、意:1.加号与等号各自需要两根火柴棍2.如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)3.n根火柴棍必须全部用上第二题火柴棒等式输入格式:输入文件matches.in共一行,有一个整数n(n<=24)。输出格式:输出文件matches.out共一行,表示能拼成的不同等式的数目。样例1输入:14
6、]; }ans=max-min;}void Output(){ofstreamfout(O_F); if (Pd())fout<<"LuckyWord"<7、f (ans%2==0) return false; else for (short i=3; i<=sqrt((double)ans); i+=2) if (ans%i==0) return false; return true;}问题描述:给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:(图略)注8、意:1.加号与等号各自需要两根火柴棍2.如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)3.n根火柴棍必须全部用上第二题火柴棒等式输入格式:输入文件matches.in共一行,有一个整数n(n<=24)。输出格式:输出文件matches.out共一行,表示能拼成的不同等式的数目。样例1输入:14
7、f (ans%2==0) return false; else for (short i=3; i<=sqrt((double)ans); i+=2) if (ans%i==0) return false; return true;}问题描述:给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:(图略)注
8、意:1.加号与等号各自需要两根火柴棍2.如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)3.n根火柴棍必须全部用上第二题火柴棒等式输入格式:输入文件matches.in共一行,有一个整数n(n<=24)。输出格式:输出文件matches.out共一行,表示能拼成的不同等式的数目。样例1输入:14
此文档下载收益归作者所有