辉辉、姗姗和佳佳是好朋友,他们一起参加了在湖南长沙长郡中学举办的第二十一届全国青少年信息学奥林匹克竞赛(noi2004)。他们很早就来到了长沙,可是报名还没有开始。怎么办呢?
他们决定分头出去玩一天,晚上回到宿舍以后给大家说说自己这一天做了什么有意义的事情。
你一定想不到辉辉干嘛去了——他睡了一天。他想:“比赛前几天老是写程序到深夜,头晕晕的……没关系,好好睡一觉,然后我会精神抖擞。
醒了之后,我要做有意义的事情。”这一睡可不得了,辉辉从早上a点b分c秒一直睡到了下午d点e分f秒。他睡了多少秒钟呢?
六个非负整数a, b, c, d, e, f(1<=a, d<=11, 0<=b, c, e, f<=59)。例如,a=6, b=5, c=4, d=3, e=2, f=1表示辉辉从06:05:
04睡到15:02:01。
样例输入】
样例输出】
var a,b,c,d,e,f:longint;
beginreadln(a,b,c,d,e,f);
d:=d+12;
writeln((d*3600+e*60+f)-(a*3600+b*60+c));
readln
end.将a,b,c,……n个字符,按顺时针方向排成一圈,然后从任意位置开始按顺时针方向连续取k个字符组成一个k位字符串。(ka
c b此时,可组成:ab,bc,ca。当给出n,k后,输出n个k位字符串。
输入:n k 输出:n个k位字符串。
输入输出样例:输入:5 4 输出:abcd
bcdecdea
deabeabc
var n,k,i,j,a,b: longint;
begin readln(n,k);
for i:=1 to n do
begina:=i;b:=0;
for j:=1 to k do
beginwrite(chr(96+a));
if a+1<>n then a:=(a+1) mod n
else a:=n;
end;writeln;
end;readln;
end.问题描述:
计算机软件版本通常被用来区分某种软件在不同时间的发布。大部分软件版本号都是用“.”分隔的非负数的序列。
对两个不同的版本a = 和b = 如果下面两个条件之一成立,我们认为版本a要比版本b新:
1. 对某个i,我们有:对所有j < i, ai > bi 和aj = bj;
2. n比m大,而且对所有i < m, ai = bi。
ai和bi都不超过longint)
在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。
输入文件(输入文件第一行是一个整数n(n<=20),表示要排序的版本数。接下来的n行每行一个版本号。每个版本号是长度不超过50的字符串。
输出文件(将排好序的结果以每行一个版本号输出。
输入输出样例:
var n,i:integer;
scan:array [1..30] of string;
function check(aa,bb:string):boolean;
vara,b:longint;
i,j:integer;
code:integer;
beginaa:=aa+'.bb:=bb+'.
i:=pos('.aa); j:=pos('.bb);
while (i>0) and (j>0) do begin
val(copy(aa,1,i-1),a,code);
val(copy(bb,1,j-1),b,code);
if a if a>b then exit(false);
delete(aa,1,i);
delete(bb,1,j);
i:=pos('.aa);
j:=pos('.bb);
end;if (i=0) and (j>0) then exit(true) else exit(false);
end;procedure qsort(l,r:integer);
vari,j:integer;
t:string;
beginif l>=r then exit;
i:=random(r-l)+l;
t:=scan[i];scan[i]:=scan[l];
i:=l;j:=r;
repeat
while (i if i=j then break; scan[i]:=scan[j];
while (i if i=j then break; scan[j]:=scan[i];
until i=j;
scan[i]:=t;
qsort(l,i-1);
qsort(i+1,r);
end;begin
readln(n);
for i:=1 to n do readln(scan[i]);
qsort(1,n);
for i:=1 to n do writeln(scan[i]);
end.上学路线(route.pas/c/cpp)
【题目描述】
你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道。南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从南到北依次编号为l到b,南北方向的街道i和东西方向的街道j的交点记为(i,j)。
你住在(1,1)处,而学校在(a,b)处,你骑自行车去上学,自行车只能沿着街道走,而且为了缩短时间只允许沿着向东和北的方向行驶。
现在有n个交叉路口在施工(x1,yl)、(x2,y2)……xn,yn),这些路口是不能通车的。
问你上学一共有多少走法?
输入格式】第一行包含两个整数a和b,并且满足1≤a,b≤16。
第二行包含一个整数n,表示有n个路口在维修(1≤n≤40)。
接下来n行,每行两个整数x_i,y_i,描述路口的位置。
【输出格式】
输出一个整数表示从(1,1)到(a,b)的行车路线总数。
样例输入输出】
样例数据解释】
joi high school
taro’s home
题解:1、递推,设f[i,j]表示从(1,1)到(i,j)的方法数,根据考虑最后一步是如何走的,分两种情况:
1)最后一步由(i-1,j)向东走过去,方法数是f[i-1,j]
2)最后一步由(i,j-1)向北走过去,方法数是f[i,j-1]
当然,如果(i,j)处在施工,那么f[i,j]=0.
综上所述得到如下递推式:
f[i,j]={1)(i,j)在施工: f[i,j]=0;(2)(i,j)没有施工:f[i,j]=f[i-1,j]+f[i,j-1];
边界条件为f[1,1]=1;
标程】program gfj;
var i,j,n,m:longint;
a,b:array[-1..52,-1..20]of longint;
procedure init;
var i,l,x,y:longint;
beginreadln(n,m);
readln(l);
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
for i:=1 to l do
beginreadln(x,y);
b[x,y]:=maxlongint;
end;end;
beginassign(input,''
reset(input);
assign(output,''
rewrite(output);
init;for i:=1 to n do
beginif b[i,1]=maxlongint then break;
a[i,1]:=1;
end;for i:=1 to m do
beginif b[1,i]=maxlongint then break;
a[1,i]:=1;
end;for i:=2 to n do
for j:=2 to m do
if b[i,j]<>maxlongint then a[i,j]:=a[i-1,j]+a[i,j-1];
writeln(a[n,m]);
close(input);
close(output);
end.遗址(ruin.pas/c/cpp)
【题目描述】
很久很久以前有一座寺庙,从上往下看寺庙的形状正好是一个正方形,由4个角上竖立的圆柱搭建而成。现在圆柱都倒塌了,只在地上留下圆形的痕迹,可是现在地上有很多这样的痕迹,专家说一定是最大的那个。
写一个程序,给出圆柱的坐标,找出由4个圆柱构成的最大的正方形,因为这就是寺庙的位置,要求计算出最大的面积。注意正方形的边不一定平行于坐标轴。
例如右上图有l0根柱子,其中(4,2),(5,2),(5,3),(4,3)可以形成一个正方形,(1,1),(4,o),(5,3),(2,4)也可以,后者是其中最大的,面积为l0。
2019noip复赛模拟练习18 答案
1.tom有一个无穷序列中如下 110100100010000100000。请你帮助tom找出在这个无穷序列中指定位置上的数字。输入格式 input format 第一行一个正整数n,表示询问的次数 接下来的n行一个正整数ai,ai表示在序列中的位置。输出格式 output format n行,每一...
2019noip普及组初赛试题 c语言
第十七届全国青少年信息学奥林匹克联赛初赛试题 普及组 c 语言两小时完成 一 单项选择题 共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确选项。1 在二进制下,1100100 1110001 a.1011 b.1101 c.1010 d.1111 2 字符 0 的 ascii 码...
NOIP2019复赛备考试题安排
noip2015复赛备考试题。day1 1035 hanoi双塔问题1120 factorials阶乘1020 麦森数day2 1077 transformations方块转换 1071 字符串的展开 1028 循环。day3 1054 神经网络 1106 fractions to decimals...