Програмування 2018


ІІ етап Всеукраїнської учнівської олімпіади з інформатики

для 8-11 класів у 2018році



З а в д а н н я

(Час виконання - 3 год)

Задача 1. Добуток (20 б.)

Напишіть програму знаходження добутку n перших членів послідовності (f+1)*(f+1+2)*…*(f+1+2+3+…+ n). Де n <100, |f|<10.

Задача 2. Ланцюжок (30 б.)

На новорічне свято дітлахи грали біля ялинки в гру «Ланцюжок». На початку гри вони шикувалися в порядку зменшення зросту, а потім з’являвся ще один гравець і повинен був дуже хутко знайти своє місце в ланцюжку, причому, якщо він знаходив дітлахів свого зросту, то за умовами гри становився за ними. Петрик зацікавився цією грою й вирішив написати програму для неї. Допоможіть Петрику написати програму.

Вхідні дані

У першому рядку – натуральне число N (1≤N30 – кількість дітлахів у ланцюжкі.

У другому рядку – упорядкований за спаданням масив даних зі зростом дітлахів (цілі додатні числа менші за 200).

У наступному рядку розміщений зріст гравця (ціле число менше за 200), якого в ланцюжку не було на початку гри.

Вихідні дані

У першому рядку – номер гравця, який підійшов у ланцюжок.

 У другому рядку – ланцюжок дітлахів разом з прибулим гравцем.



Приклад вхідних та вихідних даних.

Input10.txt
8
165 163 160 160 157 157 154 ошибка нет 1 числа
162
Output10.txt
3
165 163 162 160 160 157 157 154



Задача 3. Новорічна гірлянда (50 б.)

На Новий рік Катрусі подарували різнокольорову гірлянду. Лампочки на ній розміщувалися послідовно одна за одною, але відстані між ними були дуже різними: де короткі, а де й дуже довгі. Коли Катруся вмикала гірлянду, то помітила, що ті лампочки, які були на шнурі найближче одна до одної, горіли яскравіше за інші. Напишіть програму, яка б визначала найяскравіші лампочки й відстань між ними.



Вхідні дані (файл tochki.txt)

У першому рядку – натуральне число N (2 N ≤ 100000) – кількість лампочок.

У другому рядку – масив з N різними координатами  лампочок на шнурі (числовій прямій). Координати – це цілі числа: │xi  < 109 .



Вихідні дані (mindlin.txt)

У вихідний файл записуємо в першому рядку значення мінімальної відстані між двома точками (лампочками). У другому рядку — номери лівої та правої лампочок, яким відповідає знайдена мінімальна відстань. Якщо таких лампочок кілька, то вивести лампочки, розміщені лівіше за інших.



Приклад вводу й виводу даних



tochki.txt
5
10  3 6 2 5
Значення N, кількість лампочок
Координати лампочок
mindlin.txt
1
2 4
Мінімальна відстань
Номери лампочок



Успішного виконання!

f=int(input())

n=int(input())
P=1
for j in range(1,n+1):
    S=0
    for i in range (1,j+1):
        S=S+i
    P=P*(S+f)
print (P)
# 2 спосіб
P=1
for i in range (1,n+1):
    f=f+i
    P=P*f
print (P)

Задача 1


var


i,j,f,n,k,p: integer;


 begin
 read (f,n);
 P:=1;
 for I:=1 to n do
  begin
    K:=0;
    for j:=1 to i do
      K:=K+j;
    P:=P*(F+K);
  end;
  Write (P);
 end.
_____________________

var
F,N,I,P :integer;
begin
read (F,N);
P:=1;
for I:=1 to N Do
  begin
  F:=F+i;{F+1..F+1+2..F+1+2+3..}
  P:=P*F;
  end;
  Write (P);
end.

Задача2



var
A: array [1..50]of integer;
i,j,N,X,l : integer;
f1,f2: text;
begin
Assign (f1,'input10.txt');
Reset (f1);
read (f1,N);
for I:=1 to N do
  read (f1,A[i]);
read (f1,x);
close(f1);
Assign (f2,'output10.txt');
Rewrite(f2);

for I:=1 to n do
  if A[i]<X then
  begin
  L:=i;
  break; //прерывание поиска
  end;
if A[1]<X Then L:=1;//если первый
if A[N]>X Then L:=N+1;// если последний 
writeln (f2,l);
for I:=1 to N do
  if L=i then write (f2,X,' ',A[i],' ') else Write(f2,A[i],' ');
if L>n then write (f2,X);
 close(f2);
end.


задача3



var
A,B,C,D: array [1..1000]of integer;
i,j,N,X,l,min,k, d_min,m,m1 : integer;
f1,f2: text;
begin
Assign (f1,'tochki.txt');
Reset (f1);
read (f1,N);
for I:=1 to N do
  begin
  read (f1,A[i]);
  B[i]:=i;
  end;
close(f1);

for I:=1 to n-1 do
  for J:=i+1 to n do
    if A[i]<A[j] then
      begin
       min:=A[i];
       A[i]:=A[J];
       A[j]:=min;
       min:=B[i];
       B[i]:=B[j];
       B[j]:=min;
      end;
  for I:=1 to N-1 do
    C[I]:=A[I]-A[i+1];
  for I:=1 to N do
    Writeln (A[i],' ',B[i],' ',C[i]);
  min:=C[1];
  L:=1;
  K:=0;
  for I:=1 to N-1 do
    if min>=C[i]then
      begin
        min:=C[i];
        L:=i;
        K:=K+1;
      end;
   //m:=B[L];
   for I:=1 to n-1 do
    if (B[i]<B[L]) and(C[i]=min) then L:=i;//решение на консоль
    Writeln(min);
    Write (B[L],' ',B[L+1]);
  
   
 Assign (f2,'mindlin.txt');
 Rewrite(f2);
 Writeln (f2,min);
 if K=1 then Write (f2,B[l],' ',B[L+1])else begin
 for I:=1 to n-1 do
  if min=C[i] then
    begin
    D[i]:=B[i];//запись номеров ламп с минимальнім расстоянием
    D[I+1]:=B[I+1];
    end;
 d_min:=2000000;
 for I:=1 to n do
  if (d_min>D[i]) and (D[i]<>0) then // поиск левой лампы
    begin
    d_min:=D[i];
    L:=i;
    end;
  Write (f2,B[l],' ',B[L+1])
 end;
 close(f2);
end.

Задача 3 оновлено
var
A,B,C,D: array [1..1000]of integer;
i,j,N,X,l,min,k,k1, d_min,m,m1,l1,l2 : integer;
f1,f2: text;
begin
Assign (f1,'tochki.txt');
Reset (f1);
read (f1,N);
for I:=1 to N do
  begin
  read (f1,A[i]);
  B[i]:=i;
  end;
close(f1);
    for i:=1 to n do
      write (a[i],' ');
            
   K:=A[1]-A[2];
   L1:=1;
   L2:=2;
for I:=1 to n-1 do
  for J:=i+1 to n do
    begin
   If (a[i]>a[j]) then K1:=A[i]-A[j] else K1:=A[j]-A[i];
   if (K1<K) then
    begin
    K:=K1;
    L1:=i;
    L2:=j;
    end;
    end;
    Write (k,' ');
    writeln;
    Write (l1,' ',l2);
    end.





Немає коментарів:

Дописати коментар