noip复赛模拟练习4答案.docx
《noip复赛模拟练习4答案.docx》由会员分享,可在线阅读,更多相关《noip复赛模拟练习4答案.docx(17页珍藏版)》请在冰豆网上搜索。
![noip复赛模拟练习4答案.docx](https://file1.bdocx.com/fileroot1/2022-11/16/09d585c4-8325-4e93-ae45-1b41e5649cf1/09d585c4-8325-4e93-ae45-1b41e5649cf11.gif)
noip复赛模拟练习4答案
编程输入若干个字符串(以“?
”号结束),找出并输出未在此串中出现的所有字母和数字(按ascii码顺序列出,区分大小写)。
输入:
一行,一串字符,小于1000000个。
输出:
一行,未在字符串中出现的所有的字母和数字,按ascii码顺序、
varp,q:
setofchar;
ch,i:
char;
begin
assign(input,'agger.in');
reset(input);
assign(output,'agger.out');
rewrite(output);
p:
=['0'..'9','A'..'Z','a'..'z'];
q:
=[];
read(ch);
whilech<>'?
'do
begin
q:
=q+[ch];
read(ch);
end;
fori:
='0'to'9'do
ifnot(iinq) and (iinp)thenwrite(i);
fori:
='A'to'Z'do
ifnot(iinq) and (iinp)thenwrite(i);
fori:
='a'to'z'do
ifnot(iinq) and (iinp)thenwrite(i);
close(input);
close(output);
end.
或varp:
setofchar;
ch,i:
char;
begin
assign(input,'agger.in');
reset(input);
assign(output,'agger.out');
rewrite(output);
p:
=['0'..'9','A'..'Z','a'..'z'];
read(ch);
whilech<>'?
'do
begin
ifchinpthenp:
=p-[ch];
Read(ch);
end;
fori:
='0'to'z'do
ifiinp thenwrite(i);
close(input);
close(output);
end.
输入XYZabcd123ytFSRUuutaxer?
输出0456789ABCDEGHIJKLMNOPQTVWfghijklmnopqsvwz
输入TUIS098734AYUPLMNKasxz?
输出1256BCDEFGHJOQRVWXZbcdefghijklmnopqrtuvwy
输入1234567890!
!
!
tyklfgTYKPLKMNNBCVXDERWQAHJIKLRSTUVWXYZ?
输出FGOabcdehijmnopqrsuvwxz
输入ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqestuvwxyz123456789?
输出0r
小明爷爷家有棵苹果树,树上高低不一的长了N个苹果。
一天,M个小朋友到爷爷家做客,爷爷说:
你们每人最多可以摘两个苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。
由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?
请你计算机小朋友们最多能摘到多少个苹果?
输入:
NM(N<=100,M<=20)
N个整数(以空格相隔),分别表示每个苹果的高度
M个整数(以空格相隔),分别表示每个小朋友伸手能达到的高度。
输出:
一个整数例如:
输入:
104
1101001509010013516088130140
12010011080
输出:
5
varn,m,t,i,j,ss,sg,sum:
integer;s:
array[1..100]ofinteger;
r:
array[1..20]ofinteger;
beginreadln(n,m);
fori:
=1tondoread(s[i]);
forj:
=1tomdoread(r[j]);
fori:
=1ton-1do
forj:
=i+1tondo
ifs[i]
begint:
=s[i];s[i]:
=s[j];s[j]:
=t;
end;
fori:
=1tom-1do
forj:
=i+1tomdo
ifr[i]begin
t:
=r[i];
r[i]:
=r[j];
r[j]:
=t;
end;
writeln;
ss:
=0;sum:
=0;sg:
=1;
fori:
=1tomdo
begin
forj:
=sgtondo
begin
ifr[i]>=s[j]then
begin
sg:
=j+1;ss:
=ss+1;sum:
=sum+1;ifss=2thenbeginss:
=0;break;end;
end;
end;
end;
writeln(sum:
5);
end.
输入:
95
1101051409510012515088140
12010011080135
输出:
6
输入:
114
13011512010515012515298130128145
12412211097
输出:
4
输入208
15614913211512110515012515298130128145100150139161145129120
12512211098135145140152
输出15
输入166
144134145129138130149151136125137140155132120124
130125140135146120
输出11
新兵入队的日子是YY年MM月DD日,他们觉得这个日子特别有意义,所以决定过n天搞一次活动来纪念这个日子,可是他们不知道n天后是什么日子,所以请你帮忙计算一下日期(入队日算第0天)。
输入数据
文件第一行读入n(0<=n<=50000)
从文件的第二行分别读入YY,MM,DD其中1949<=YY<=1992,日期绝对合法。
输出数据
输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为“Y-M-D”。
样例输入
10000
1979416
样例输出
2006-9-1
constmon:
array[1..12]ofinteger=(31,28,31,30,31,30,
31,31,30,31,30,31);
varn:
longint;
yy,mm,dd:
longint;
p:
longint;
functioncheck(y:
longint):
boolean;
begin
if((ymod4=0)and(ymod100<>0))or(ymod400=0)thenexit(true);
exit(false);
end;
begin
assign(input,'Date.in');reset(input);
assign(output,'Date.out');rewrite(output);
readln(n);
readln(yy,mm,dd);
whilen>0do
begin
p:
=mon[mm];
if(mm=2)and(check(yy))theninc(p);
inc(dd);dec(n);
ifdd>pthenbegindd:
=1;inc(mm);end;
ifmm>12thenbegininc(yy);mm:
=1;end;
end;
writeln(yy,'-',mm,'-',dd);
close(input);close(output);
end.
输入5000
1978320输出1991-11-27
输入8000
1980229输出2002-1-24
输入50000
19521010输出2089-9-1
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:
假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个LuckyWord,这样的单词很可能就是正确的答案。
【输入】
输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出】
输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是LuckyWord,那么输出“LuckyWord”,否则输出“NoAnswer”;
第二行是一个整数,如果输入单词是LuckyWord,输出maxn-minn的值,否则输出0。
【输入输出样例1】
word.in
word.out
Error
LuckyWord
2
【输入输出样例1解释】
单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
【输入输出样例2】
word.in
word.out
Olympic
NoAnswer
0
【输入输出样例2解释】
单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。
var
st:
string;
max,min,i:
longint;
a:
array['a'..'z']oflongint;
ch:
char;
functionfun(n:
longint):
boolean;
vari:
longint;
begin
ifn<2thenbeginfun:
=false;exit;end;
fori:
=2ton-1do
ifnmodi=0thenbeginfun:
=false;exit;end;
fun:
=true;
end;
begin
assign(input,'word.in');
reset(input);
assign(output,'word.out');
rewrite(output);
readln(st);
fillchar(a,sizeof(a),0);
fori:
=1tolength(st)do
inc(a[st[i]]);
max:
=0;
min:
=101;
forch:
='a'to'z'do
ifa[ch]>0then
begin
ifa[ch]>maxthenmax:
=a[ch];
ifa[ch]
end;
iffun(max-min)then
begin
writeln('LuckyWord');
writeln(max-min);
end
else
begin
writeln('NoAnswer');
writ