Главная
«Маршруты».
В прямоугольной таблице в n строк и m столбцов (n и m не превосходят 10) подсчитать число возможных маршрутов перехода из левой верхней клетки в правую нижнюю, если разрешены перемещения вниз или вправо.
Например, если n=3, m=4, то число возможных маршрутов K=10.
Тест | Размеры | Результат |
1 | 2´2 | 2 |
2 | 5´5 | 70 |
3 | 8´6 | 792 |
4 | 9´10 | 24310 |
rem Маршруты
cls
defint a-z
deflng k
dim k(10,10)
input "Число строк";n
input "Число столбцов";m
for i=1 to n
for j=1 to m
if i=1 or j=1 then
k(i,j)=1
else
k(i,j)=k(i-1,j)+k(i,j-1)
end if
next
next
print "Число маршрутов ";k(n,m)
end
«Третий»
В массиве целых чисел (не более 100 элементов), не превосходящих по модулю 1000 и среди которых нет равных, найти порядковый номер третьего по величине числа.
Например:
Число чисел 10
1-е число 1
2-е число 6
3-е число 7
4-е число –51
5-е число –10
6-е число –16
7-е число 71
8-е число 53
9-е число 11
10-е число –13
Ответ: третье по величине число имеет порядковый номер 9.
Задание 1.
Тест | Число чисел | Числа | Позиция |
1 | 8 | 25, 78, -91, 48, 76, -85, -92, 57 | 8 |
2 | 9 | -16, -19, -89, -88, -85, 14, -73, -87, 4 | 1 |
3 | 10 | -94,-37, -44, -46, 4, -97, -75, 39, 20, -83 | 5 |
4 | 11 | 11, 15, 14, 13, -9, -6, 10, 3, 4, 7, 12 | 4 |
rem Третий
cls
defint a-z
dim a(100),b(100),n(100)
input "Число элементов ",k - ввод
for i=1 to k
print i;"-е число"; - вывод
input a(i)
b(i)=a(i)
n(i)=i
next
for i=1 to k-1
for j=1 to k-i
if b(j)<b(j+1) then
swap b(j),b(j+1) - обмен данными
swap n(j),n(j+1)
end if
next
next
print "Третий по величине элемент находится на ";n(3);" месте."
End
«Эксперимент » – 100 баллов
В лаборатории проводятся эксперименты. В журнале учета фиксируется время начала эксперимента и его окончания. Необходимо по этим показателям определить его продолжительность. Эксперимент длится менее суток
Входные данные
В первой строке входного файла task2.in записано время начала эксперимента в формате ЧЧ:ММ:СС (с ведущими нулями), а во второй строке время его окончания в том же формате.
Выходные данные
В выходной файл task2.out следует вывести продолжительность эксперимента в том же формате.
Примеры:
task2.in | task2.out |
01:01:01 12:05:06 |
11:04:05 |
01:01:01 02:01:00 |
0:59:59 |
23:59:59 00:00:00 |
00:00:01 |
- 1.Задание «Эксперимент » – 100 баллов
Тест | task2.in | task2.out |
1 |
06:12:34 18:35:59 |
12:23:25 |
2 |
06:12:34 18:35:24 |
12:22:50 |
3 |
06:12:34 05:35:24 |
23:22:50 |
4 |
06:12:34 05:14:24 |
23:01:50 |
5 |
20:12:34 01:20:40 |
05:08:06 |
За каждый тест по 20 баллов
program task2;
const
d = 24 * 60 * 60;
var
a, b: string;
adate, bdate: integer;
function Date(str: string): integer;
var
s, m, h: string;
sek, min, has: integer;
cod: integer;
begin
s := copy(str, 7, 2);
m := copy(str, 4, 2);
h := copy(str, 1, 2);
val(s, sek, cod);
val(m, min, cod);
val(h, has, cod);
Date := sek + min * 60 + has* 60 * 60;
end;
function Stroka(date: integer): string;
var
s, m, h: string;
sek, min, has: integer;
begin
sek := date mod 60;
date := date div 60;
min := date mod 60;
has:= date div 60;
str(sek, s);
str(min, m);
str(has, h);
if sek < 10 then s := '0' + s;
if min < 10 then m := '0' + m;
if has< 10 then h := '0' + h;
Stroka := h + ':' + m + ':' + s;
end;
begin
assign(input, 'task24.in');reset(input);
assign(output, 'task2.out');
rewrite(output);
writeln('Введите время начала и окончания работы');
Readln( a );
Readln( b );
adate := Date(a);
bdate:= Date(b);
if adate > bdate then bdate := bdate + d;
writeln(Stroka(bdate - adate));
Close(input);
Close(output);
end.
НОК
Имя входного файла: | lcm.in |
Имя выходного файла: | lcm.out |
Ограничение по времени: | 1 секунда |
Ограничение по памяти: | 64 мегабайта |
Наименьшим общим кратным (НОК) нескольких чисел называется наименьшее натуральное число, которое делится на каждое из этих чисел. Заданы два числа N и K. Требуется найти набор из N различных натуральных чисел, наименьшее общее кратное которых равняется K. Среди всех этих чисел не должно быть единицы и самого числа K.
Формат входного файла
В первой строке входного файла записаны через пробел два числа N и K (1 ≤ N ≤ 1000, 1 ≤ K ≤ 109).
Формат выходного файла
В выходной файл в первой строке выведите искомый набор из N чисел, разделённых пробелами. Если Вы смогли найти несколько наборов, то выведите любой из них.
Если требуемого набора не существует, тогда выведите -1.
Пример входных и выходных файлов
lcm.in | lcm.out |
2 14 | 2 7 |
12 20736 | 3 9 27 81 256 128 64 32 16 8 4 2 |
17 42 | -1 |
7 123456 | 2 3 4 6 30864 41152 61728 |
Задача 4. НОК (100 баллов)
№ | Исходные данные | Пример правильного ответа |
1 | 4 90 | 2 45 3 30 |
2 | 3 68 | 34 4 2 |
3 | 10 6592 | 3296 64 2 4 1648 8 824 16 412 32 |
4 | 7 1024 | -1 |
5 | 3 42 | 2 3 7 |
6 | 3 210 | -1 |
7 | 5 67264 | 33632 64 2 4 16816 |
8 | 11 6343552 | 3171776 128 2 4 1585888 8 792944 16 396472 32 198236 |
9 | 10 71791232 | 35895616 128 2 4 17947808 8 8973904 16 4486952 32 |
10 | 7 130856528 | 65428264 11896048 2 4 32714132 8 16357066 |
Var n,k,i,s,d:Integer;
b:Real;
begin
ReadLn(n,k);
s:=0;
b:=sqrt(k);
d:=trunc(b);
For i:=2 to d do
if k mod i =0 then s:=s+2;
If s<n then WriteLn (-1)
else begin
s:=0;
i:=2;
While (s<n) do begin
if k mod i=0 then begin
Write(i,' ');
s:=s+1;
if s=n then break;
Write(k div i,' ');
s:=s+1;
end;
i:=i+1
end
end
end.
2. «Неравенства» – 100 баллов
Про числа a, b и c известно, что среди них нет равных, а также результаты их попарного сравнения в виде трех непротиворечивых неравенств вида x<y или x>y в произвольном порядке. Необходимо записать соотношение между этими величинами в виде правильного двойного неравенства вида x<y<z.
Ваша программа должна
- принять с клавиатуры или прочитать из файла ineg.in три результата попарного сравнения;
- найти и вывести на экран или в файл ineg.out правильное двойное неравенство для величин a, b и c.
Пример:
Первое неравенство b<c
Второе неравенство a<c
Третье неравенство a>b
Ответ b<a<c
Примечание. Исходный текстовый файл ineg.in содержит в каждой из первых трех строк один из результатов сравнения. Выходной текстовый файл ineg.out должен содержать двойное неравенство – ответ.
«Неравенства » – 100 баллов
Тест | Исходные данные (файл ineg.in) | Ответ |
1 |
c>b a<c b>a |
a<b<c |
2 |
a<b a<c c<b |
a<c<b |
3 |
c>b a>c a>b |
b<c<a |
4 |
a<b a>c c<b |
c<a<b |
5 |
a>c b<a c<b |
c<b<a |
Создаём массив, индексы которого это буквы, участвующие в сравнении.
Организовываем процесс: считываем очередное неравенство, и определяем какая из двух букв больше. И увеличиваем 'вес' элемента массива с соответствующим индексом большим из этих двух букв. Потом буквы выводим в порядке соответствующем их 'весу'
var s:string;
mass:array['a'..'c'] of integer;
i:integer;
j:char;
begin
mass['a']:=0;
mass['b']:=0;
mass['c']:=0;
for i:=1 to 3 do
begin
Writeln('введите',i,' неравенство');
readln(s);
if s[2]='<'
then inc(mass[s[3]])
else inc(mass[s[1]]);
end;
Writeln();
for i:=0 to 1 do
for j:='a' to 'c' do
if mass[j]=i then write(j,'<');
i:=2;
for j:='a' to 'c' do
if mass[j]=i then write(j);
end.