Copyright 2019 - Custom text here

простые(сложные) задачи

«Маршруты».

В прямоугольной таблице в 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. 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.

Родителям

Родители могут найти полезную информацию по воспитанию детей, а также новости класса

Меня вдохновляют

22

победы моих учеников  в олимпиадах и конкурсах

конкурсыи олимпиады

Меня воодушевляют

travel

путешествия по стране и встречи с интересными людьми

путешествия

Меня радуют

flower

мои цветы на приусадебном участке

садоводство