noip复赛模拟练习16答案Word格式文档下载.docx
- 文档编号:21469289
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:20.17KB
noip复赛模拟练习16答案Word格式文档下载.docx
《noip复赛模拟练习16答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《noip复赛模拟练习16答案Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
有无及时到达YesNoYesYes
早到或迟到分钟数560200
程序段如下:
varh1,n1,h2,n2,s1,s2:
integer;
begin
read(h1);
whileh1<
>
-1do
read(n1);
s1:
=h1*60+n1;
//把时间从小时转化为分
read(h2);
read(n2);
s2:
=h2*60+n2;
ifs2<
=s1thenwriteln('
Yes'
'
'
s1-s2)//判断是否迟到,如果未迟到,则输出早到的时间
elsewriteln('
No'
s2-s1);
//如果迟到则输出迟到的时间
end;
end.
输入1520
1830
1219
1210
850
842
-1输出No190
Yes9
Yes8
输入930
932
1130
1230
1159
-1输出No2
Yes11
输入100
959
1122
120
1930
1932
2430
-1输出Yes1
No38
No2
懒羊羊在前一阵准备羊村的小高考复习时表现出了罕见的勤奋,现在他得知了小高考四门必修课的成绩,他想知道根据羊村的高考政策,他在羊村高考中能加几分。
羊村高考政策如下:
分数段等级
成绩>
=90A
90>
=75B
75>
=60C
成绩<
60D
每得一个A,可在羊村高考中加1分,若得4A,则可以加5分。
当然,只要有一门功课得D,那么就将失去羊村高考资格。
仅有一行,4个不大于100的非负整数,相邻两数之间用空格隔开。
仅有一行,若有D级存在,则输出“PoorLanYangYang”(引号不输出,注意大小写);
否则输出懒羊羊在羊村高考中的加分。
输入样例1:
100958994
输入样例2:
0000
输出样例1:
3
输出样例2:
PoorLanYangYang
vara,i,s:
s:
=0;
fori:
=1to4do//由循环开始
read(a);
//输入四门功课的成绩
ifa>
=90theninc(s);
//如果分数达到90分那么加一分
ifa<
60thenbeginwrite('
PoorLanYangYang'
);
//如果有一门功课在60分以下那么淘汰,并且退出
exit;
ifs=4thens:
=5;
//如果四门全优则得5分
writeln(s);
输入90969995输出5输入65667862输出0
输入89909288输出2输入77705969输出'
NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法也许只能让航天员出仓维修,但是多次的维修会消耗航天员大量的能量,因此NASA便想设计一种食品方案,让体积和承重有限的条件下多装载一些高卡路里的食物.航天飞机的体积有限,当然如果载过重的物品,燃料会浪费很多钱,每件食品都有各自的体积、质量以及所含卡路里,在告诉你体积和质量的最大值的情况下,请输出能达到的食品方案所含卡路里的最大值,当然每个食品只能使用一次.
【输入格式】第一行两个数体积最大值(<
400)和质量最大值(<
400)第二行一个数食品总数N(<
50).第三行-第3+N行每行三个数体积(<
400)
质量(<
400)所含卡路里(<
500)
【输出格式】一个数所能达到的最大卡路里(int范围内)
【样例输入】
320350
4
16040120
80110240
22070310
40400220
【样例输出】
550
【分析】二维背包
【源程序】
Programv1334;
Var
f:
array[0..400,0..400]oflongword;
n,maxv,maxw,v,w,p,i,j,k:
longword;
Begin
readln(maxv,maxw);
readln(n);
=1tondo
begin
readln(v,w,p);
forj:
=maxvdowntovdo
fork:
=maxwdowntowdo
iff[j,k]<
f[j-v,k-w]+pthen
f[j,k]:
=f[j-v,k-w]+p;
end;
writeln(f[maxv,maxw]);
End.
输入200210
5
10011090
120200180
808890
102105103
150160140输出193
输入320308
7
200180190
210240260
178188198
160200150
320330300
300308329
350340345输出329
输入380390
10
255260280
200230240
310300290
298288278
200300240
198180176
340390380
321308314
360366356
288278290输出380
题目描述:
一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。
接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。
每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。
(不能丢弃有水的瓶子)
显然在某些情况下CC无法达到目标,比如N=3,K=1。
此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。
现在CC想知道,最少需要买多少新瓶子才能达到目标呢?
输入文件(Water.in):
一行两个正整数,N,K(1<
=N<
=10^9,K<
=1000)。
输出文件(Water.out):
一个非负整数,表示最少需要买多少新瓶子。
31
1
132
输入样例3:
10000005
输出样例3:
15808
样例说明:
无
数据规模
对于50%的数据,N<
=10^7
对于100%的数据如题目。
var
n,m,k,i,t,ans,sum:
longint;
a:
array[0..101]ofinteger;
functiondfs(k:
longint):
i,l:
l:
=1;
fori:
=1tokdol:
=l*2;
dfs:
=l;
readln(n,m);
k:
=n;
whilek>
0dobegin
inc(t);
a[t]:
=kmod2;
=kdiv2;
=1totdoifa[i]=1theninc(ans);
whileans>
mdobegin
=1totdoifa[i]=1thenbreak;
whilea[i]=1dobegin
a[i]:
inc(i);
dec(ans);
inc(ans);
ifi>
tthent:
=i;
=1totdoifa[i]=1theninc(sum,dfs(i-1));
writeln(sum-n);
end.输入153输出85002输出204输出350003输出72
给定一个十进制正整数n,它的递归变幻数定义如下:
1.如果n的位数多于1位(忽略前置的0),将n的各个位上的数相乘,乘积为m。
称m为n的子变幻数,n称为m的父变幻数。
求一个数的变幻数等于求其子变幻数。
即求n的变幻数等于求m的变幻数。
2.如果n的位数只有一位,n的变幻数即为它本身。
如求679的变幻数过程为:
679->
378(=6*7*9)->
168(=3*7*8)->
48(=1*6*8)->
32(=4*8)->
6(=2*3),所以679的变幻数为6。
现在的问题是给定一个子变幻数k,问k的父变幻数最小是多少?
如:
k=18,则k的父变幻数可以是29,也可以是92。
但最小为29。
数据输入:
一个子变幻数k(位数小于1000)。
数据输出:
k的最小父变幻数。
当不存在父变幻数时请输出“Thereisnosuchnumber!
”,输出结果不含引号。
样例输入:
48
样例输出:
68
分析
已知变换数求其子变换数是非常简单的,然而题目要求的是求它的逆过程。
如果b为a的子变换数,那么定义b=son(a),
假设a由k位组成,表示那么a可以表示成[a1,a2,a3,…,ak]
b=son(a)=a1*a2*a3*..*ak
即b是由a的各个位相乘得到
果把b分解,然后将各个因式相连,是不是也可以得到b的一个父变幻数?
显然,从a到b的推导过程来说,是成立的。
求最小的父变幻数
贪心策略
按照上述分解规则,通过一些贪心策略可以得到最小的父变幻数。
从a&
#61664;
b的变换过程中,因子只能是1位整数。
从b&
a的过程中,b的因子只能取2&
9,(有1的情况下,a一定不是b的最小父变幻数)
b分解数字越少,a越小。
a,b:
array[0..1000]oflongint;
ans:
array[0..10000]oflongint;
ch:
char;
n,i,j:
proceduredivit(n:
longint);
i,p,k,m:
b[0]:
p:
=1toa[0]do
p:
=p*10+a[i];
inc(b[0]);
b[b[0]]:
=pdivn;
=pmodn;
ifp=0thenbegin
whileb[k]=0doinc(k);
m:
fillchar(a,sizeof(a),0);
=ktob[0]do
inc(m);
a[m]:
=b[i];
a[0]:
=b[0]-k+1;
inc(ans[0]);
ans[ans[0]]:
end
elsedec(j);
procedureinit;
assign(input,'
unreal.in'
assign(output,'
unreal.out'
reset(input);
rewrite(output);
procedureendit;
close(input);
close(output);
init;
whilenoteofdo
read(ch);
if(ch>
='
0'
)and(ch<
9'
)thenbegininc(a[0]);
val(ch,a[a[0]]);
ans[0]:
j:
=9;
while(j>
1)and(j<
10)dodivit(j);
ifa[0]<
1thenwriteln('
Thereisnosuchnumber!
'
)
elsebegin
=ans[0]downto1dowrite(ans[i]);
writeln;
endit;
对信息进行加密,可提高信息传输的安全性。
正是由于它的重要用途,人们发明了各种各样的加密方式。
其中一种方式是,对文中单词进行逆序处理。
请你写一个程序,对已加密的文本进行解密。
输入文件(encrypt.in)
第1行,一个整数n,表示后面将有n行已加密的信息。
第2行至第n+1行,每行一个不超过1000个字符的字符串,每个字符串中只有空格和小写字母组成。
输出文件(encrypt.out)
共n行,每行对应输出解密后的文本。
输入输出样例:
encrypt.in
encrypt.out
2
enoowteerht
iekilsihtemag
onetwothree
ilikethisgame
数据范围:
n<
=50,000
老师。
。
时限2S。
programencrypt;
n,i:
str:
ansistring;
proceduredeal(now:
ansistring);
l,k,i:
=pos('
now);
whilek<
0do
=k-1downto1do
write(now[i]);
write('
delete(now,1,k);
ifnow<
then
while(now[1]='
)do
delete(now,1,1);
ifnow='
break;
=length(now);
=ldownto1do
encrypt.in'
encrypt.out'
readln(n);
readln(str);
deal(str);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- noip 复赛 模拟 练习 16 答案