noip普及组复赛模拟试题26(答案)
更新时间:2024-07-11 08:05:01 阅读量: 综合文库 文档下载
- noip普及组复赛真题推荐度:
- 相关推荐
1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。【输入】输入文件名为 reverse.in。 输入共 1 行,一个整数N。
【输出】输出文件名为 reverse.out。
输出共 1 行,一个整数,表示反转后的新数。 【输入输出样例 1】reverse.in reverse.out 123 321
【输入输出样例 2】Reverse.in reverse.out -380 -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); if s1[1]='-' then begin s2:='-';
for i:=1 to n-1 do s1[i]:=s1[i+1]; delete(s1,n,1); end;
n:=length(s1); for i:=1 to n do s3:=s3+s1[n-i+1]; i:=1;
while(s3[i]='0')and(length(s3)>1) do delete(s3,1,1); write(s2+s3);
close(input);close(output); end.
2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章 中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配, 即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1), 如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。 【输入】输入文件名为 stat.in,2 行。
第 1 行为一个字符串,其中只含字母,表示给定单词;
第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
【输出】输出文件名为 stat.out。
只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开, 分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字 母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。 【输入输出样例 1】stat.in stat.out To
to be or not to be is a question 2 0
【输入输出样例 1 说明】输出结果表示给定的单词 To 在文章中出现两次,第一次出现的位置为0。 【输入输出样例 2】stat.in stat.out to
Did the Ottoman Empire lose its power at that time -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(input,'stat.in');reset(input); assign(output,'stat.out');rewrite(output); readln(s1); s1:=upcase(s1); first:=-1; n:=length(s1); while not eoln do begin
s2:=''; repeat
inc(s); read(ch); ch:=upcase(ch); if ch<>' 'then s2:=s2+ch; until (ch=' ')or eoln; if s2=s1 then if first=-1 then begin
first:=s-n-1; inc(ans); end else inc(ans); end;
if first=-1 then write(-1) else write(ans,' ',first); close(input);close(output); end.
3.数字统计 (two.pas/c/cpp) 【问题描述】 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。 比如给定范围[2, 22],数字 2 在数2中出现了 1次,在数 12中出现 1 次,在数 20 中出现 1 次,在数
21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6次。
【输入】 输入文件名为 two.in。 输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。 【输出】 输出文件名为 two.out。输出共 1 行,表示数字 2 出现的次数。 【输入输出样例1】 Two.out two.in 2 22 6
【输入输出样例2】 two.out two.in 2 100 20
【数据范围】 1 ≤ L ≤R≤ 10000。
var a,b,c,d,e,f:integer; begin
assign(input,'two.in');reset(input);
assign(output,'two.out');rewrite(output); readln(a,b); f:=0;d:=0;
for c:=a to b do begin e:=c; repeat
d:=e mod 10; e:=e div 10;
if d=2 then inc(f); until e=0; end;
writeln(f);
close(input);close(output); end.
输入2 100 输出 20 输入 1 1000 输出 300
输入 2222 2223 输出 7 输入 9993 10000 输出 0
4. 接水问题 (water.pas/c/cpp)【问题描述】 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1。
现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 1到 n 编号,i号同学的接水量为 wi。接水开始时,1 到 m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 j 完成其接水量要求 wj 后,下一名排队等候接水的同学 k马上接替 j 同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j 同学第x 秒结束时完成接水, 则 k 同学第 x+1 秒立刻开始接水。 若当前接水人数 n’不足 m,则只有 n’个龙头供水,其它 m?n’个龙头关闭。
现在给出 n名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。
【输入】输入文件名为 water.in。
第 1 行2 个整数 n 和 m,用一个空格隔开,分别表示接水人数和龙头个数。 第 2 行 n 个整数 w1、w2、??、wn,每两个整数之间用一个空格隔开,wi表示 i 号同学的接水量。
【输出】输出文件名为 water.out。
输出只有一行,1 个整数,表示接水所需的总时间。 【输入输出样例1】 water.out water.in
5 3 4 4 4 1 2 1
【输入输出样例1解释】
第 1 秒,3 人接水。第 1秒结束时,1、2、3 号同学每人的已接水量为 1,3 号同学接完水,4 号同学接替 3 号同学开始接水。
第 2 秒,3 人接水。第 2 秒结束时,1、2 号同学每人的已接水量为 2,4 号同学的已接水量为 1。
第 3 秒,3 人接水。第 3 秒结束时,1、2 号同学每人的已接水量为 3,4 号同学的已接水量为 2。4号同学接完水,5 号同学接替 4 号同学开始接水。 第 4 秒,3 人接水。第 4 秒结束时,1、2 号同学每人的已接水量为 4,5 号同学的已接水量为 1。1、2、5 号同学接完水,即所有人完成接水。 总接水时间为 4 秒。 【输入输出样例2】
water.in water.out 8 4 163 23 71 87 32 70 93 80 76
【数据范围】
1 ≤ n ≤ 10000,1 ≤m≤ 100 且 m≤ n; 1 ≤wi ≤ 100。
var a:array[1..101]of integer; b:array[1..10001]of integer; c,d,e,f,g:integer; h:longint; tf:boolean; begin
assign(input,'water.in');reset(input);
assign(output,'water.out');rewrite(output); fillchar(b,sizeof(b),0); fillchar(a,sizeof(a),0); readln(c,d); for e:=1 to c do read(b[e]);
for e:=1 to d do a[e]:=b[e]; f:=d; h:=0; repeat
tf:=true; inc(h);
for g:=1 to d do begin
if a[g]>0 then dec(a[g]);
while (a[g]=0)and(f
end;
until tf=true; writeln(h);
close(input);close(output); end. 或const
inf='water.in'; ouf='water.out'; var
n,m,i,j,k,tot,min,max:longint; a:array[1..10000] of longint; b:array[1..100] of longint; begin
assign(input,inf);reset(input); assign(output,ouf);rewrite(output); readln(n,m);
for i:=1 to n do a[i]:=0; for i:=1 to n do read(a[i]); for i:=1 to m do b[i]:=a[i];
min:=maxlongint; max:=-maxlongint;
if n=m then//如果水管数和人数相等,那么直接输出节水量的最大值就行了 begin
for i:=1 to m do
if b[i]>max then max:=b[i]; writeln(max);
close(input);close(output); halt; end;
for i:=m+1 to n do begin
min:=maxlongint; for j:=1 to m do if b[j] min:=b[j]; k:=j;//找接水量最小的水管,并记录该水管的位置 end; b[k]:=b[k]+a[i];//该水管的接水量+下一个人的接水量 end; max:=-maxlongint; for i:=1 to m do if b[i]>max then max:=b[i];//搜一遍,找接水量的最大值 writeln(max); close(input);close(output); end. 输入10 4 4 37 71 16 28 34 28 87 39 43 输出 124 输入100 20 76 26 67 21 73 19 66 23 46 57 63 8 58 65 94 65 96 1 98 52 92 36 28 7 67 94 92 76 85 38 54 88 28 33 33 55 4 94 66 28 69 86 67 98 36 14 94 27 41 59 79 96 96 29 100 52 11 27 60 87 56 54 66 38 52 87 100 82 46 70 52 34 52 65 78 74 35 94 29 84 77 40 86 19 24 79 42 6 32 53 44 85 61 31 99 64 74 61 81 81 输出 331 模拟法 Var a:array[1..10000] of integer; N,mI,j,k:longint; Begin Assign(input,’water.in’);reset(input); Assign(output,’water.out’);rewrite(output); Readln(n,m); For i:=1 to n do Read(a[i]); For i:=m+1 to n do Begin K:=1; For j:=1 to m do If a[j] For i:=1 to m do If a[i]>a[k] then k:=I; Writeln(a[k]); Close(input); Close(output); End.
正在阅读:
noip普及组复赛模拟试题26(答案)07-11
《骆驼祥子》文段阅读题及答案04-19
杜绝浪费的英语作文5篇04-01
2012国家保安员资格考试试卷复习题2212-05
2018年小型水力发电站行业现状及发展趋势分析(目录)12-08
2013-2018年中国橡皮船行业市场发展战略分析及投资前景预测报告05-21
第四章第二节集散控制技术05-15
超级演说家励志演讲稿精选范文8篇08-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复赛
- 模拟试题
- 普及
- 答案
- noip
- 练习-模拟试题参考答案B-2
- 启道经双辅导班-北大经济双学位学费是多少?
- 工作环境控制程序 - 图文
- 2015一建市政终极背诵(管理部分)
- 我国早餐谷物食品发展综述
- 2016尔雅影视鉴赏答案
- 融资租赁公司可行性研究报告 2015
- 大学《政治经济学》习頮集答案
- 药物分析第七版习题及部分答案
- 版高考化学一轮复习第6讲氧化还原反应的基本概念和规律练习新人
- OL办公美女服装搭配礼仪
- 2009 Revit 1级工程师学生用
- 工作研究课程设计工业工程1102-11-邱从智 - 图文
- 2013-2018年中国复合材料产业发展前景及供需格局预测报告
- YY综采工作面安装作业规程
- 智能小区全套解决方案
- 2014年电大《金融学》形成作业任务1-6(加考试答案大合集)
- 毛泽东与《资本论》(全文)
- 自行车里程表的设计 单片机毕业设计 - 图文
- 四年级科学下册它在哪里教案湘教版