资源描述:
《noip普及组复赛模拟试题26(答案)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。【输入】输入文件名为reverse.in。输入共1行,一个整数N。【输出】输出文件名为reverse.out。输出共1行,一个整数,表示反转后的新数。【输入输出样例1】reverse.inreverse.out123321【输入输出样例2】Reverse.inreverse.out-380
2、-83【数据范围】-1,000,000,000≤N≤1,000,000,000。var s3,s1,s2:string; n,i:integer;begin assign(input,'reverse.in');reset(input); assign(output,'reverse.out');rewrite(output); read(s1); n:=length(s1); ifs1[1]='-'then begin s2:='-'; fori:=1ton-1do s1[i]:=s1[
3、i+1]; delete(s1,n,1); end; n:=length(s1); fori:=1tondo s3:=s3+s1[n-i+1]; i:=1; while(s3[i]='0')and(length(s3)>1)dodelete(s3,1,1); write(s2+s3); close(input);close(output);end.2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单
4、词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。【输入】输入文件名为stat.in,2行。第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。【输出】输出文件名为stat.ou
5、t。只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。【输入输出样例1】stat.instat.outTotobeornottobeisaquestion20【输入输出样例1说明】输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。【输入输出样例2】stat.instat.outtoDidtheOtto
6、manEmpireloseitspoweratthattime-1【输入输出样例2说明】表示给定的单词to在文章中没有出现,输出整数-1。【数据范围】1≤单词长度≤10。1≤文章长度≤1,000,000第二题有个陷阱,如果纯粹用字符串的7个操作命令,由于字串很长,后面几个点肯定超时。第二行的长串可以用字符一个个读。遇到空格跟上一行的串进行比较。这样能保证在规定时间内不超时。var s1,s2:string; ch:char; s,first,n,i,ans:longint;begin assign(inp
7、ut,'stat.in');reset(input); assign(output,'stat.out');rewrite(output); readln(s1); s1:=upcase(s1); first:=-1; n:=length(s1); whilenoteolndo begin s2:=''; repeat inc(s); read(ch); ch:=upcase(ch); ifch<>''thens2:=s2+ch; until(ch='')ore
8、oln; ifs2=s1then iffirst=-1then begin first:=s-n-1; inc(ans); endelse inc(ans); end; iffirst=-1thenwrite(-1)elsewrite(ans,'',first); close(input);close(output);end.3.数字统计(two.pas/c/cp