Збірник задач "Курс спортивного програмування. FPC" з розв'язками

Про матеріал

Збірник задач "Курс спортивного програмування. FPC" з розв'язками містить допустимі програмні коди до до поставлених задач, зрозумілі для тих, хто починає програмувати мовою Паскаль

Перегляд файлу

Основи спортивного програмування. FPC – задачі сайту e-olimp.com.ua з розв’язками

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Основи  спортивного  програмування.   FPC

задачі сайту e-olimp.com з розв’язками

 

 

 

 

 

Упорядник Є.В.Шибецький

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 


ЛІНІЙНІ ПРОГРАМИ

 

#1 ПРОСТА ЗАДАЧА?

 

Програма зчитує двоцифрове число і виводить через пропуск кожну цифру окремо.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Натуральне число на проміжку від 10 до 99 включно.

 

Вихідні дані

Спочатку першу цифру числа і через пропуск другу.

 

Ліміт часу: 0.3 секунди

Бали за пройдений тест: 6.25

Складність: 10%

 

ПРИКЛАД


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

23 

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

2 3


 

var

 a,b:integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,a);

 writeln(f2,a div 10,' ',a mod 10);

 close(f2);

 close(f1);

end.

 


#906 ДОБУТОК ЦИФР

 

Задано трицифрове число. Визначити добуток його цифр.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задане трицифрове число.

 

Вихідні дані

У єдиному рядку добуток цифр заданого числа.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 2.5

Складність: 4%

Джерело: ДПА-2010 Варіант 6

 

ПРИКЛАД


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

235 

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

30


 

program p_f_906;

var

 a,b,c,d,e:integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,a);

 b:=a div 100;

 c:=a div 10 mod 10;

 d:=a mod 10;

 e:=b*c*d;

 writeln(f2,e);

 close(f2);

 close(f1);

end.

 


#924 КІЛЬЦЕ

   Задано площу кільця й радіус зовнішнього кола. Визначити радіус внутрішнього кола.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано 2 дісних числа, спочатку площу кільця і через пропуск - радіус зовнішнього кола. Радіус кола не перевищує 100.

 

Вихідні дані

У єдиному рядку вивести радіус внутрішнього кола з точністю 2 знаки після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 10%

Джерело: ДПА-2010 Варіант 24

 

ПРИКЛАД


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

 50.2655  5 

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

 3.00


 

program p_f_924;

var

 s,r1,r2:real;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,s);

 read(f1,r1);

 r1:=pi*r1*r1-s;

 r2:=sqrt(r1/pi);

 writeln(f2,r2:1:2);

 close(f2);

 close(f1);

end.

 


#2059 ОЗЕРО З ЛІЛІЯМИ

   На лісовому озерці почали цвісти лілії, У перший день розцвіла одна лілія, а потім кожен день кількість квітучих лілій подвоювалась. На N-ий день все озеро було покрите квітучими лілямі. А на який день була покрита квітучими ліліями половина поверхні озера?

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Єдине число N (1 < N ≤ 200) - номер дня, на який вся поверхня озера була покрита квітучими ліліями.

 

Вихідні дані

Єдине число - відповідь до задачі.

 

Ліміт часу: 0.1 секунди

Бали за пройдений тест: 5

Складність: 5%

 

ПРИКЛАД


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

 3 

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

 2


 

program p_f_2059;

var

 a,b:integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,a);

 b:=a-1;

 writeln(f2,b);

 close(f2);

 close(f1);

end.

 


#57 МЕТЕЛИК-САНІТАР

 

   Учні, йдучи з дому до школи або навпаки – зі школи додому, полюбляють їсти цукерки. Але, як завжди, ця приємна справа інколи має неприємні наслідки – дітки іноді викидають обгортки на шкільному подвір’ї.

   Мурзик завжди слідкував за чистотою шкільного двору і йому у цьому з радістю допомагали метелики, вдячні за чудові фотографії, зроблені ним. Метелики могли використовувати власні крильця як лінзи, причому вони могли змінювати їх фокусну відстань. Помітивши обгортку від цукерки, що лежала на шкільному подвір’ї у точці з координатами X1, Y1, метелик перелітав у точку з координатами X2, Y2, Z2, розташовану на шляху сонячного проміння до обгортки і, змінюючи фокусну відстань своїх крилець-лінз, спалював обгортку від цукерки.

   Яку оптичну силу D мали крильця-лінзи метелика у цей момент?

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку 2 числа: координати X1, Y1 обгортки від цукерки. У другому – 3 числа: координати X2, Y2, Z2 метелика у момент спалювання обгортки.

Всі вхідні дані цілі числа, що не перевищують за модулем 1000.

 

Вихідні дані

Єдине число – оптична сила крилець-лінз D, обчислена з точністю до 3-х знаків після коми за правилами математичних округлень.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 10

Складність: 9%

 

ПРИКЛАД


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

 10 20

 10 20 100  

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

 0.010

 


 


program p_57;

var x1,y1,x2,y2,z,s:real;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,x1,y1);

  readln(f,x2,y2,z);

  close(f);

  s:=sqrt(sqr(x1-x2)+sqr(y1-

   y2)+sqr(z));

  s:=1/s;

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,s:0:3);

  close(f)

end.



#133 КВАДРАТ І ТОЧКИ

 

Яку найбільшу кількість точок з цілочисельними координатами можна на аркуші в клітинку накрити квадратом зі стороною N клітинок?

 

ТЕХНІЧНІ УМОВИ

 

Вхід: Єдине число - сторона квадрату N (1 <= N <= 10000).

 

Вихід: Максимальна кількість накритих клітин K.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 10

Складність: 11%

 

ПРИКЛАД


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

 1  

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

 4


 

program p_133;

var n:real;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,n);

  close(f);

  n:=sqr(n+1);

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,Trunc(n));

  close(f)

end.


#157 ЗООПАРК

   У зоопарку N кліток вишикувані в ряд. У зоопарку, крім інших тварин, живуть дві мавпочки, Слава та Юра. Слава та Юра завжди були великими друзями і сиділи у сусідніх клітках, але тепер вони посварились і більше не хочуть бачити один одного. Наглядач вже зібрався переселити їх у відповідності з їх бажанням, проте виникла проблема. Слава і Юра — дуже освічені мавпочки (кожна з них закінчила аж по вісім класів!), і вони неодмінно хочуть знати, скільки всього існує способів розселити їх так, щоб їх клітки не були сусідніми, і, звичайно, їх клітки повинні бути різними. Можна вважати, що всі N кліток доступні, інші мешканці зоопарку готові переїхати куди завгодно.

   Наглядач спробував було порахувати сам, але збився з рахунку десь в районі бегемотів. І цілком очевидно, що без вашої допомоги йому не справитись!

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку вхідних даних міститься число N (2 <= N <= 100) — кількість кліток у зоопарку.

 

Вихідні дані

Виведіть одно число — кількість способів поселити Славу та Юру в різні клітки так, щоб ці клітки не були сусідніми.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 14.2857

Складність: 10%

 

ПРИКЛАД


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

 Sample 1

 3

 Sample 2

 4 

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

 Sample 1

 2

 Sample 2

 6


 

 

 

 

program p_157;

var n:real;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,n);

  close(f);

  n:=(n-1)*(n-2);

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,Trunc(n));

  close(f)

end.


ПРОГРАМИ З РОЗГАЛУЖЕННЯМИ

 

#107 КОМПАКТ-ДИСКИ

 

   Чисті компакт-диски продаються в трьох різних видах упаковок. Упаковка зі 100 дисків коштує 100 грн., з 20 дисків - 30 грн., а один окремий диск коштує 2 грн. Якої мінімальної суми має вистачити для покупки N таких дисків?

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Кількість N дисків, які потрібно купити. N ≤ 1000.

 

Вихідні дані.

Мінімальна сума, потрібна для покупки.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 1

Складність: 31%

 

ПРИКЛАД


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

 123  

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

 136


 


program p_f_107;

var

 s,n,a,b,c,d:integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,n);

 s:=0;

 a:=n div 100;

 n:=n mod 100;

 b:= n div 20;

 n:=n mod 20;

 c:=100*(a+1);

 d:=10*(b+1);

 s:=100*a+30*b+2*n;

 if s>c then s:=c;

 if 30*b+2*n>30*(b+1) then

        s:=s-30*b-2*n+30*(b+1);

 writeln(f2,s);

 close(f2);

 close(f1);

end.



#125 ОЛІМПІАДА

 

   Олімпіада почалася в h1 год m1 хв s1 сек, а закінчилася цієї ж календарної доби в h2 год m2 хв s2 сек. Скільки часу (год хв сек) тривала олімпіада?

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку записано час початку, а у другому - час закінчення олімпіади у форматі год хв сек.    0 ≤ h1 ≤ h2 ≤ 23, 0 ≤ m1, m2 ≤ 59, 0 ≤ s1, s2 ≤ 59.

 

Вихідні дані

У єдиний рядок вихідного файлу потрібно записати час, який тривала олімпіада у форматі год хв сек.

 

Ліміт часу: 1 секунда

 Бали за пройдений тест: 10

 Складність: 13%

 

ПРИКЛАД


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

 9 30 0

 12 45 30 

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

 3 15 30

 


 

program p_f_125;

var

 s1,s2,s,m1,m2,m,h1,h2,h3,h: integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,h1,m1,s1);

 read(f1,h2,m2,s2);

 s:=s2-s1;

 if s<0 then begin s:=s+60; m2:=m2-1 end;

 m:=m2-m1;

 if m<0 then begin m:=m+60; h2:=h2-1 end;

 h:=h2-h1;

 writeln(f2,h,' ',m,' ',s);

 close(f2);

 close(f1);

end.

 


#902 РІВЕНЬ НАВЧАЛЬНИХ ДОСЯГНЕНЬ

 

   Встановити рівень навчальних досягнень учня (початковий, середній, достатній, високий) відповідно до заданої оцінки (від 1 до 12).

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Одне число - бал учня

 

Вихідні дані

Вивести Initial для початкового рівня, Average - для середнього, Sufficient - для достатнього і High - для високого.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 3.33333

Складність: 5%

Джерело: ДПА-2010 Варіант 2

 

ПРИКЛАД


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

 12 

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

 High


 

program p_f_902;

var

 n: integer;

 s:string;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,n);

 if n<=3 then s:='Initial'

 else if n<=6 then s:='Average'

 else if n<=9 then s:='Sufficient'

 else s:='High';

 writeln(f2,s);

 close(f2);

 close(f1);

end.

 


#903 ПЕРША ЧИ ОСТАННЯ?

 

   Задано трицифрове число. Визначити, яка цифра в ньому є більшою – перша чи остання.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано трицифрове число.

 

Вихідні дані

Вивести більшу з вказаних цифр. У випадку їх рівності вивести знак "=" (без лапок).

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 2.5

Складність: 8%

Джерело: ДПА-2010 Варіант 3

 

Приклад


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

 328 

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

 8


 

program p_f_903;

var

 n: integer;

 s:string;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,n);

 if n div 100<n mod 10 then writeln(f2,n mod 10);

 if n div 100>n mod 10 then writeln(f2,n div 100);

 if n div 100=n mod 10 then writeln(f2,'=');

 close(f2);

 close(f1);

end.

 


#905 ЯКИЙ ТРИКУТНИК?

 

   Визначити тип трикутника (рівносторонній, рівнобедрений, різносторонній) за заданими довжинами його сторін.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

В єдиному рядку задано 3 цілих числа - довжини сторін трикутника. Довжини сторін не перевищують 100.

 

Вихідні дані

В єдиному рядку вивести 1, якщо трикутник рівносторонній, 2  - якщо рівнобедрений і 3 - якщо різносторонній.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 8%

Джерело: ДПА-2010 Варіант 5

 

ПРИКЛАД


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

 3 4 3 

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

 2


 

program p_f_905;

var

 a,b,c,k: longint;

 x,y:boolean;

 s:string;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,a,b,c);

 x:=(a=b) and (a=c);

 y:=(a=b) or (a=c) or (b=c);

 if x then k:=1 else

 if y then k:=2 else k:=3;

 writeln(f2,k);

 close(f2);

 close(f1);

end.

 


#915 ПРЯМОКУТНИЙ ЧИ НІ?

 

   Задано довжини сторін трикутника. Визначити, чи є цей трикутник прямокутним.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано 3 натуральні числа - довжини сторін трикутника. Довжини сторін не перевищують 1000.

 

Вихідні дані

Вивести "YES" (без лапок), якщо трикутник є прямокутним, або "NO" (без лапок) у протилежному випадку.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 8%

Джерело: ДПА-2010 Варіант 15

 

ПРИКЛАД


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

 3 5 4 

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

 YES


 

 

var a,b,c:longint;

begin

 read(a,b,c);

 a:=a*a;

 b:=b*b;

 c:=c*c;

 if (a=b+c) or (b=a+c) or (c=a+b) then writeln('YES') else writeln('NO')

end.

 


#918 ЯКА ЧВЕРТЬ?

 

   Задано точку з координатами х та у. Визначити, в якій координатній чверті вона розміщена.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку через пропуск задано 2 дійсні числа - координати точки, значення координат по модулю не перевищують 100.

 

Вихідні дані

 Єдине число - номер відповідної чверті, або 0, якщо однозначно визначити чверть неможливо.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 2.5

Складність: 12%

Джерело: ДПА-2010 Варіант 18

 

ПРИКЛАД

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

 12 31 

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

 1

 

program p_918;

var x,y: real;

begin

 read(x,y);

 if (x=0) or (y=0) then writeln(0);

 if (x>0) and (y>0) then writeln(1);

 if (x<0) and (y>0) then writeln(2);

 if (x<0) and (y<0) then writeln(3);

 if (x>0) and (y<0) then writeln(4);

end.

 


#923 ПОРА РОКУ

 

   Визначити назву пори року за заданим номером місяця, використовуючи складені умови.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Єдине число - номер місяця.

 

Вихідні дані

Для весняних місяців вивести Spring, для літніх - Summer, для осінніх - Autumn і для зимових - Winter.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 3.33333

Складність: 5%

Джерело: ДПА-2010 Варіант 23

 

ПРИКЛАД


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

 5 

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

 Spring


 

program p_923;

var x: integer;

begin

 read(x);

 if (x>=3) and (x<=5) then writeln('Spring');

 if (x>=6) and (x<=8) then writeln('Summer');

 if (x>=9) and (x<=11) then writeln('Autumn');

 if (x=12) or (x<=2) then writeln('Winter');

end.

 


#929 ПАРАЛЕЛОГРАМ

 

   Задано 4 числа a, b, c, d, що визначають довжини відрізків. Визначити, чи можна з цих відрізків утворити паралелограм.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано 4 числа через пропуск.

 

Вихідні дані

Вивести у єдиному рядку слово "YES", якщо паралелограм утворти можна або "NO" (без лапок) у протилежному випадку.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 1.66667

Складність: 14%

Джерело: ДПА-2010 Варіант 29

 

ПРИКЛАД


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

 Sample 1

 2 4 2 4

 Sample 2

 2 4 2.5 4 

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

 Sample 1

 YES

 Sample 2

 NO


 

program p_929;

var a,b,c,d: real;

 f:boolean;

begin

 read(a,b,c,d);

 f:=((a=b) and (c=d)) or ((a=c) and (b=d)) or ((a=d) and (b=c));

 if f then writeln('YES') else writeln('NO')

end.

 


#43 КІЛЬКІСТЬ УЧАСНИКІВ ОЛІМПІАДИ

 

   Як відомо, на питання про те, скільки в нього учнів, давньогрецький вчений Піфагор відповідав так: "Половина моїх учнів вивчає математику, четверта частина вивчає природу, сьома частина проводить час у мовчазних роздумах, частину, що залишилась, складають 3 діви".

   Секретар олімпіади на питання: "Скільки зареєстровано учасників олімпіади з інформатики?", відповідав подібно Піфагору: "K-та частина почала розв'язувати першу задачу, M-та частина – другу, а N-та – третю. В той же час D учасників вирішують проблему: "З чого почати?". Ваша задача вивести кількість учасників олімпіади S, або -1, якщо секретар помилився у своєму повідомленні.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку через пропуск числа K, N, M, D. 1 ≤ K, N, M, D ≤ 1000.

 

Вихідні дані

Вивести кількість учасників олімпіади S, або -1, якщо секретар помилився у своєму повідомленні.

 

Ліміт часу: 0.1 секунди

Бали за пройдений тест: 10

Складність: 23%

Автор: Присяжнюк А.В.

 

ПРИКЛАД


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

 2 4 7 3  

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

 28


 

program p_43;

var k,m,n,d,x:real;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,k,m,n,d);

  close(f);

  x:=d*k*m*n/(k*m*n-m*n-k*n-k*m);

  if x<>trunc(x) then x:=-1;

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,Trunc(x));

  close(f)

end.


ПРОГРАМИ З ЦИКЛАМИ

 

#2 ЦИФРИ

 

Підрахувати кількість цифр цілого невід'ємного числа n.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Ціле невід'ємне число n (0 ≤ n ≤ 2000000000).

 

Вихідні дані

Кількість цифр у числі n.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 6.25

Складність: 20%

 

ПРИКЛАД


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

 13243 

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

 5


 

program p_2;

var n,k:longint;

begin

 read(n);

 k:=0;

 if n=0 then k:=1;

 while n>0 do

begin

        k:=k+1;

        n:=n div 10

end;

 writeln(k)

end.

 


#109 НУМЕРАЦІЯ

 

Для нумерації M сторінок в книжці використано N цифр. По заданому N вивести M або 0, якщо розв’язку не існує. Нумерація починається з першої сторінки.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Єдине число N. У книзі не більше 1001 сторінки.

 

Вихідні дані

Шукана кількість сторінок.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 6.66667

Складність: 34%

 

ПРИКЛАД


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

 27  

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

 18


 

program p_109;

var n,n1,m1,k,m2:longint;

begin

 read(n);

 n1:=0;

 m1:=0;

 while n>n1 do

begin

        m1:=m1+1;

        m2:=m1;

        k:=0;

        while m2>0 do

        begin

                k:=k+1;

                m2:=m2 div 10

        end;

        n1:=n1+k;

end;

 if n=n1 then writeln(m1) else writeln(0)

end.

 


#128 ЩАСЛИВІ КВИТКИ

 

Підрахувати кількість щасливих квитків, у яких сума перших трьох цифр дорівнює N. Щасливим квитком називається квиток з шестизначним номером, в якого сума перших трьох цифр дорівнює сумі останніх трьох.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку записано одне натуральне число N (N ≤ 27).

 

Вихідні дані

Одне число - кількість таких щасливих квитків.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 10

Складність: 11%

 

ПРИКЛАД


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

 1  

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

 9


 

program p_128;

var n,i,a1,a2,a3,a4,a5,a6,k,j:longint;

begin

 read(n);

 k:=0;

 for i:=0 to 999999 do begin

 j:=i;

 a1:=j div 100000; j:=j mod 100000;

 a2:=j div 10000;  j:=j mod 10000;

 a3:=j div 1000;   j:=j mod 1000;

 a4:=j div 100;    j:=j mod 100;

 a5:=j div 10;     a6:=j mod 10;

 if (a1+a2+a3=n) and (a4+a5+a6=n) then k:=k+1;

end;

 writeln(k)

end.

 


#927 КІЛЬКІСТЬ ІГРАШОК

 

   Задано кількість видів іграшок в магазині, кількість іграшок кожного виду та вартість іграшки кожного виду. Визначити загальну кількість іграшок, вартість яких менше 50 грн.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано кількість наявних у прейскуранті видів іграшок N (0 ≤ N ≤ 1000). У наступних N рядках задано по 2 числа через пропуск: спочатку кількість іграшок A (0 ≤ A ≤ 1000) чергового виду та їх ціна B (0 < B ≤ 10000) в грн.

 

Вихідні дані

У єдиному рядку вивести єдине число - відповідь до задачі.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 11%

Джерело: ДПА-2010 Варіант 27

 

ПРИКЛАД


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

 3

 2 100.00

 5 23.00

 10 22.50 

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

 15

 

 


 

program p_927;

var n,a,s,i:longint;b:real;

begin

 read(n);

 s:=0;

 for i:=1 to n do begin

 read(a,b);

 if b<50 then s:=s+a

end;

 writeln(s)

end.

 


ПРОГРАМИ З ВИКОРИСТАННЯМ МАСИВІВ

 

#108 СЕРЕДНЄ З ЧИСЕЛ

 

Дано три різних числа a, b, c. Вивести середнє з них.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

Числа a, b, c цілі і по модулю не перевищують 1000.

 

Вихідні дані

Єдине число - відповідь до задачі.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 9.09091

Складність: 12%

 

ПРИКЛАД


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

 11 3 7  

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

 7


 

program p_f_108;

var

 a:array[1..3] of integer;

 i,j,t:integer;

 f1,f2:text;

begin

 assign(f1,'input.txt');

 assign(f2,'output.txt');

 reset(f1);

 rewrite(f2);

 read(f1,a[1],a[2],a[3]);

 for i:=1 to 2 do

 for j:=i to 3 do

 if a[i]>a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t end;

 writeln(f2,a[2]);

 close(f2);

 close(f1);

end.

 


#904 ЗБІЛЬШИТИ НА 2

 

   Задано одновимірний масив А цілих чисел. Збільшити на 2 кожний невід’ємний елемент масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів масиву (h ≤ 100). У другому рядку через проміжок задано самі елементи масиву, значення кожного з яких за модулем не перевищує 100.

 

Вихідні дані

В єдиному рядку вивести через проміжок h чисел: нові значення елементів масиву, у тому ж порядку, в якому їх було задано.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 1.66667

Складність: 18%

Джерело: ДПА-2010 Варіант 4

 

ПРИКЛАД


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

 4

 1 2 3 4 

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

 3 4 5 6

 


 

Пояснення: При виведенні результатів роботи числа повинні бути відокремлені одним пропуском, після останнього елементу пропуск повинен бути відсутнім.

 


program p_904;

var i,n:integer;

    a:array[1..101] of integer;

    f:text;

begin

 assign(f,'input.txt');

 reset(f);

 readln(f,n);

 for i:=1 to n do begin

 read(f,a[i]);

 if a[i]>=0 then a[i]:=a[i]+2

end;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 for i:=1 to n-1 do

 write(f,a[i],' ');writeln(f,a[n]);

 close(f)

end.



 

#907 ПЕРШИЙ НЕ БІЛЬШИЙ ЗА 2,5

 

   Задано одновимірний масив А дійсних чисел, пронумерованих від 1 до h. Визначити перший елемент масиву, який не перевищує 2.5.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано кількість елементів масиву h (0 < h ≤ 100), у наступному рядку задано h дісних чисел, відокремлених пропуском.

 

Вихідні дані

Вивести у одному рядку спочатку індекс знайденого першого вказаного елемента масива і через пропуск його значення з точістю 2 знаки після десяткової крапки. У випадку відсутності вказаного елементу в масиві вивести "Not Found" (без лапок).

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 12%

Джерело: ДПА-2010 Варіант 7

 

Приклад


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

 5

 6 7.5 2.1 2.0 0 

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

 3 2.10

 


 


program p_907;

var i,n,k:integer;

    a:array[1..101] of real;

    s:real;

    f:text;

begin

 assign(f,'input.txt');

 reset(f);

 k:=0;

 read(f,n);

 for i:=1 to n do begin

 read(f,a[i]);

 if (a[i]<=2.5) and (k=0) then

           begin s:=a[i]; k:=i end

end;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 if k<>0 then writeln(f,k,' ',s:0:2)

         else writeln(f, 'Not Found');

 close(f)

end.



#908 ТІ, ЩО ДІЛЯТЬСЯ НА 6

 

   Для N цілих чисел визначити суму й кількість додатніх чисел, які діляться на 6 без остачі.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано кількість чисел N (0 < N ≤ 100), у наступному рядку через пропуск задано самі числа, значення яких по модулю не перевищують 10000.

 

Вихідні дані

У єдиному рядку виведіть спочатку кількість вказаних чисел і через пропуск їх суму.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 5

Складність: 15%

Джерело: ДПА-2010 Варіант 8

 

ПРИКЛАД


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

 3

 12 15 18 

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

 2 30

 


 

program p_908;

var i,n,k,s:longint;

    a:array[1..101] of integer;

    f:text;

begin

 assign(f,'input.txt');

 reset(f);

 k:=0;

 s:=0;

 read(f,n);

 for i:=1 to n do begin

 read(f,a[i]);

 if (a[i]>0) and (a[i] mod 6=0) then begin s:=s+a[i]; k:=k+1 end

end;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,k,' ',s);

 close(f)

end.


#910 СЕРЕДНЄ АРИФМЕТИЧНЕ ДОДАТНИХ

 

   Задано одновимірний масив А дійсних чисел, пронумерованих від 1 до h. Визначити середнє арифметичне додатних елементів масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано число h - кількість елементів масиву (0 < h ≤ 100). У наступному рядку задано h елементів масиву, відокремлених пропусками. Значення елементів не перевищують по модулю 100.

 

Вихідні дані

У єдиному рядку вивести відповідь до задачі з точністю 2 знаки після десяткової крапки. У випадку відсутності у масиві вказаних елементів вивести повідомлення "Not Found" (без лапок).

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 6.66667

Складність: 11%

Джерело: ДПА-2010 Варіант 10

 

ПРИКЛАД


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

 3

 5.2 -2 4 

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

 4.60

 


 


program p_910;

var i,n,k:longint;

    a:array[1..101] of real;

    f:text;

    s:real;

begin

 assign(f,'input.txt');

 reset(f);

 read(f,n);

 k:=0;

 s:=0;

 for i:=1 to n do begin

 read(f,a[i]);

 if a[i]>0 then begin s:=s+a[i];

  k:=k+1 end

end;

 IF k>0 then s:=s/k;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 if k>0 then writeln(f,s:0:2)

else writeln(f,'Not Found');

 close(f)

end.


 


#914 МОДУЛЬ МАКСИМАЛЬНОГО

 

   Задано одновимірний масив А дійсних чисел, пронумерованих від 1 до h. Визначити значення модуля максимального елемента масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів у масиві (h ≤ 100). У наступному рядку через пропуск задано h дійсних чисел - самі елементи масиву, значення яких не перевищують по модулю 100.

 

Вихідні дані

Єдине число - відповідь до задачі, виведене з точністю 2 знаки після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 18%

Джерело: ДПА-2010 Варіант 14

 

ПРИКЛАД


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

 5

 6 7.5 2.1 2.0 0 

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

 7.50

 


 

program p_914;

var i,n:longint;

    a:array[1..101] of real;

    f:text;

    max:real;

begin

 assign(f,'input.txt');

 reset(f);

 read(f,n);

 read(f,a[1]);

 max:=a[1];

 for i:=2 to n do begin

 read(f,a[i]);

 if a[i]>max then max:=a[i]

end;

 max:=abs(max);

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,max:0:2);

 close(f)  end.


#916 ЦІКАВИЙ ДОБУТОК

 

   Визначити всі можливі значення добутку i*j, якщо цілочислові значення змінних i та j змінюються відповідно i від a до b та j від c до d (1 ≤ a, b, c, d ≤ 10).

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку 4 числа через пропуск: a, b, c та d.

 

Вихідні дані

Єдине число - кількість можливих варіантів добутку.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 31%

Джерело: ДПА-2010 Варіант 16

 

ПРИКЛАД


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

 1 10 1 10 

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

 42


 

program p_916;

var a,b,c,d,i,j,k,s,n:integer;

          x:array[1..101] of integer;

begin

 read(a,b,c,d);

 if a>b then begin n:=a; a:=b; b:=n end;

 if c>d then begin n:=c; c:=d; d:=n end;

 i:=a;  n:=0;  k:=1;

 while i<=b do begin

        j:=c;

        while j<=d do begin

                n:=n+1;

                x[n]:=i*j;

                j:=j+1;

        end;

        i:=i+1

end;

 for i:=1 to n-1 do

 for j:=i+1 to n do

 if x[i]>x[j] then begin a:=x[i]; x[i]:=x[j]; x[j]:=a end;

 for i:=1 to n do

 if x[i]<x[i+1] then k:=k+1;

 writeln(k)

end.

#917 ПОДВОЄНИЙ МІНІМАЛЬНИЙ

 

   Задано одновимірний масив A дійсних чисел пронумерованих від 1 до h. Обчислити подвоєне значення мінімального елемента масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів у масиві (h ≤ 100). У наступному рядку через пропуск h дійсних чисел - самі елементи масиву, значення кожного з яких по модулю не перевищує 100.

 

Вихідні дані

У єдиному рядку вивести відповідь до задачі з точністю до 2-х знаків після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 5%

Джерело: ДПА-2010 Варіант 17

 

ПРИКЛАД


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

 6

 6 7.5 2.1 2.0 0 -3 

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

 -6.00

 


 

program p_917;

var i,n:longint;

    a:array[1..101] of real;

    f:text;

    min:real;

begin

 assign(f,'input.txt');

 reset(f);

 read(f,n);  read(f,a[1]);  min:=a[1];

 for i:=2 to n do begin

 read(f,a[i]);

 if a[i]<min then min:=a[i]

end;

 min:=2*min;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,min:0:2);

 close(f)

end.


#919 НОМЕР НА 3

 

   Задано одновимірний масив А дійсних чисел, пронумерованих від 1 до h. Визначити суму і кількість додатних елементів, номери яких діляться на 3 без остачі.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів у масиві (h ≤ 100). У наступному рядку через пропуск h дійсних чисел - самі елементи масиву, значення кожного з яких по модулю не перевищує 100.

 

Вихідні дані

У єдиному рядку вивести спочатку кількість шуканих елементів масиву і через пропуск їх суму, обчислену з точністю до 2-х знаків після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 7%

Джерело: ДПА-2010 Варіант 19

 

ПРИКЛАД


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

 6

 6 7.5 2.1 2.0 0 -3 

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

 1 2.10

 


 

program p_919;

var i,n,k:longint;

    a:array[1..101] of real;

    f:text;

    s:real;

begin

 assign(f,'input.txt');

 reset(f);  k:=0;  s:=0;  read(f,n);

 for i:=1 to n do begin

 read(f,a[i]);

 if (a[i]>0) and (i mod 3=0) then begin s:=s+a[i]; k:=k+1 end

end;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,k,' ',s:0:2);

 close(f) end.


#921 ВІД`ЄМНІ ЕЛЕМЕНТИ

 

   Задано одновимірний масив А дійсних чисел, пронумерованих від 1 до h. Визначити суму й кількість від’ємних елементів масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів масиву (h ≤ 100). У наступному рядку через пропуск задано h дійсних чисел - самі елементи масиву, значення яких не перевищують по модулю 100.

 

Вихідні дані

У єдиному рядку вивести спочатку кількість шуканих чисел і через пропуск їх суму, обчислену з точністю до 2-х знаків після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 7%

Джерело: ДПА-2010 Варіант 21

 

ПРИКЛАД


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

 5

 6 -7.5 2.1 -2.0 0 

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

 2 -9.50

 


 

program p_921;

var i,n,k:longint;

    a:array[1..101] of real;

    f:text;

    s:real;

begin

 assign(f,'input.txt');

 reset(f);  k:=0;  s:=0;

 read(f,n);

 for i:=1 to n do begin

 read(f,a[i]);

 if a[i]<0 then begin s:=s+a[i]; k:=k+1 end

end;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,k,' ',s:0:2);

 close(f)

end.


#922 ЗСУНЬ ЕЛЕМЕНТИ

 

   Задано одновимірний масив А цілих чисел довжини h. Зсунути елементи масиву циклічно праворуч на 1 крок.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів масиву (h ≤ 100). У другому рядку задано самі елементи масиву, значення кожного з яких за модулем не перевищує 100.

 

Вихідні дані

В єдиному рядку вивести через проміжок h чисел: нові значення елементів масиву.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 1.66667

Складність: 11%

Джерело: ДПА-2010 Варіант 22

 

ПРИКЛАД


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

 4

 1 2 3 4 

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

 4 1 2 3

 


 

program p_922;

var i,n,k:longint;

    a:array[1..101] of integer;

    f:text;

begin

 assign(f,'input.txt');

 reset(f);  read(f,n);

 for i:=1 to n do

 read(f,a[i]);

 close(f);

 k:=a[n];

 for i:=n downto 2 do

 a[i]:=a[i-1];

 a[1]:=k;

 assign(f,'output.txt');

 rewrite(f);

 for i:=1 to n-1 do write(f,a[i],' ');

 writeln(f,a[n]);

 close(f)

end.


#928 СУМА НАЙБІЛЬШОГО ТА НАЙМЕНШОГО

 

   Задано одновимірний масив A цілих чисел. Визначити суму найменшого та найбільшого елементів масиву.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число h - кількість елементів масиву (h ≤ 100). У другому рядку через проміжок задано самі елементи масиву, значення кожного з яких за модулем не перевищує 100.

 

Вихідні дані

В єдиному рядку вивести одне число - відповідь до задачі.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 1.66667

Складність: 8%

Джерело: ДПА-2010 Варіант 28

 

ПРИКЛАД


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

 4

 1 2 3 4 

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

 5

 


 


program p_928;

var i,n:longint;

    a:array[1..101] of integer;

    f:text;

    max,min:integer;

begin

 assign(f,'input.txt');

 reset(f);

 read(f,n);

 read(f,a[1]);

 max:=a[1];

 min:=max;

 for i:=2 to n do begin

 read(f,a[i]);

 if a[i]>max then max:=a[i];

 if a[i]<min then min:=a[i]

end;

 max:=max+min;

 close(f);

 assign(f,'output.txt');

 rewrite(f);

 writeln(f,max);

 close(f)

end.


 


ПРОГРАМИ З ВИКОРИСТАННЯМ РЯДКІВ

 

#494 ГОЛОСНІ

 

До голосних літер в латинському алфавіті відносяться літери A, E, I, O, U і Y. Інші літери вважаються приголосними. Напишіть програму, яка підраховує кількість голосних літер в тексті.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У вхідному файлі міститься один рядок тексту, який складається лише із заглавних латинських літер та проміжків. Довжина рядка не перевищує 100 символів.

 

Вихідні дані

У вихідний файл вивести одне ціле число – кількість голосних у вхідному тексті.

 

Ліміт часу: 1 секунда

Бали за пройдений тест: 9.09091

Складність: 3%

 

ПРИКЛАД


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

 COBRA 

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

 2


 

program p_494;

var i,k:byte;

      a:string[100];

begin

  readln(a);

  k:=0;

  for i:=1 to length(a) do begin

    if a[i]='A' then k:=k+1;

    if a[i]='E' then k:=k+1;

    if a[i]='I' then k:=k+1;

    if a[i]='O' then k:=k+1;

    if a[i]='U' then k:=k+1;

    if a[i]='Y' then k:=k+1

  end;

  writeln(k)

end.


#901 КІЛЬКІСТЬ ОПЕРАЦІЙ

 

   Визначити загальну кількість операцій додавання (+), віднімання (-) та множення (*) у заданому арифметичному виразі.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано арифметичний вираз без дужок та пропусків. Кількість символів у виразі не перевищує 250.

 

Вихідні дані

Єдине число - кількість вказаних операцій.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 13%

Джерело: ДПА-2010 Варіант 1

 

ПРИКЛАД


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

 -1+2*3+a 

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

 3


 

program p_901;

var i,k:integer;

      a:string;

begin

  readln(a);

  k:=0;

  for i:=2 to length(a) do begin

    if a[i]='+' then k:=k+1;

    if a[i]='-' then k:=k+1;

    if a[i]='*' then k:=k+1

  end;

  writeln(k)

end.

 


#909 КІЛЬКІСТЬ СЛІВ

 

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

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано фрагмент тексту на англійській мові, кількість символів у якому не перевищує 250. Гарантується, що у тексті відсутні тире, дефіси, цифри і числа.

 

Вихідні дані

Єдине число - кількість слів у фрагменті.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 6.66667

Складність: 7%

Джерело: ДПА-2010 Варіант 9

 

ПРИКЛАД


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

 Hello world!  

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

 2


 

program p_909;

var i,k:integer;

      a:string;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,a);

  close(f);

  k:=0;

  for i:=1 to length(a) do begin

    if a[i]=' ' then k:=k+1;

  end;

  k:=k+1;

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,k);

  close(f)

end.

 


#912 КІЛЬКІСТЬ РЕЧЕНЬ

 

Визначити кількість речень у заданому фрагменті тексту.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано фрагмент тексту на англійській мові, кількість символів у якому не перевищує 250. Гарантується, що у тексті відсутні тире, дефіси, цифри і числа.

 

Вихідні дані

Єдине число - кількість речень у фрагменті.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 6.66667

Складність: 28%

Джерело: ДПА-2010 Варіант 12

 

ПРИКЛАД


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

 Hello world! 

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

 1


 

program p_912;

var i,k:integer;

      a:string;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,a);

  close(f);

  k:=0;

  a:=a+' ';

  for i:=1 to length(a) do begin

    if (a[i]='.') and (a[i+1]<>'.') then k:=k+1;

    if (a[i]='!') and (a[i+1]<>'!') and (a[i+1]<>'?') then k:=k+1;

    if (a[i]='?') and (a[i+1]<>'!') and (a[i+1]<>'?') then k:=k+1;

  end;

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,k);

  close(f)

end.

 


#930 НОМЕР МОБІЛЬНОГО ТЕЛЕФОНУ

 

   Задано номер мобільного телефону. Визначити, які цифри відсутні в цьому номері.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано номер мобільного телефону.

 

Вихідні дані

У першому рядку вивести кількість відсутніх у номері цифр. У другому рядку у порядку зростання вивести відсутні цифри, відокремлені пропуском.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 1.66667

Складність: 33%

Джерело: ДПА-2010 Варіант 30

 

ПРИКЛАД


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

 0631562976

 

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

 2

 4 8


 


program p_930;

var i,j,k,p:integer;

      a,c:string[13];

      b:array[1..13] of integer;

      f:text;

begin

  assign(f,'input.txt');

  reset(f);

  readln(f,a);

  close(f);

  p:=0;

  for i:=0 to 9 do begin

    str(i,c);

    k:=0;

    for j:=1 to length(a) do

      if a[j]=c then k:=k+1;

    if k=0 then begin p:=p+1; b[p]:=i 

end;

  end;

  if p>0 then for i:=1 to p-1 do

    for j:=i+1 to p do

      if b[i]>b[j] then begin

 k:=b[i];b[i]:=b[j];b[j]:=k end;

  assign(f,'output.txt');

  rewrite(f);

  writeln(f,p);

  if p>0 then begin for i:=1 to p-1 do

 write(f,b[i],' ');

  writeln(f,b[p]);end;

  close(f)

end.



ПРОГРАМИ З ВИКОРИСТАННЯМ ПІДПРОГРАМ

 

#913 ВИКОРИСТОВУЙ ПІДПРОГРАМУ

 

   Обчислити суму і добуток N пар заданих дійсних чисел, скориставшись підпрограмою SumDob для обчислення суми  і добутку двох дійсних чисел.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У першому рядку задано натуральне число N - кількість пар чисел. У наступних N рядках через пропуск задано по 2 дісних числа. Всі вхідні дані по модулю не перевищують 100.

 

Вихідні дані

У N рядках вивести через пропуск по два числа: спочатку суму, а потім добуток чергової пари чисел. Результат виводити з точністю 4 знаки після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 10

Складність: 8%

Джерело: ДПА-2010 Варіант 13

 

ПРИКЛАД


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

 2

 6 7.5

 2.1 2.0 

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

 13.5000 45.0000

 4.1000 4.2000

 


 

Пояснення: Дозволяється використовувати 2 підпрограми, для знахождення суми і добутку відповідно кожну окремо.

 

program p_913;

var x,y:array[1..255] of real;

    s,d:real;

    n,i:integer;

 procedure sumdob(x,y:real;var s,d:real);

  begin

    s:=x+y; d:=x*y

  end;

begin

  read(n);

  for i:=1 to n do  read(x[i],y[i]);

  for i:=1 to n do begin

    sumdob(x[i],y[i],s,d); writeln(s:0:4,' ',d:0:4)

  end end.


#920 ВИКОРИСТОВУЙ ФУНКЦІЮ

 

   Задано 3 дійсні числа х, у i z. Визначити min(max(x,y), max(y,z), x+y+z), скориставшись допоміжними функціями для обчислення мінімального та максимального елементів з двох заданих.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано 3 дійсні числа х, у i z, відокремлені пропуском. Значення чисел не перевищують по модулю 100.

 

Вихідні дані

Єдине число - відповідь до задачі, виведене з точністю 2 знаки після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 10%

Джерело: ДПА-2010 Варіант 20

 

ПРИКЛАД


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

 1.05 2.25 2.15 

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

 2.25


 

program p_920;

var x,y,z,k:real;

function max(x,y:real):real;

  begin

    if x>y then max:=x else max:=y

  end;

function min(x,y:real):real;

  begin

    if x>y then min:=y else min:=x

  end;

begin

  read(x,y,z);

  k:=min(max(x,y),max(y,z));

  k:=min(k,x+y+z);

  writeln(k:0:2);

end.

 


#925 ПЕРИМЕТР І ПЛОЩА

 

   Задано дійсні числа x1, y1, x2, y2, x3, y3, значення яких відповідають координатам вершин трикутника. Визначити периметр та площу трикутника, використовуючи підпрограму Vidrizok для обчислення довжин відрізка.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку через пропуск задано координати вершин трикутника: 6 чисел x1, y1, x2, y2, x3, y3, значення яких не перевищують по модулю 100.

 

Вихідні дані

У єдиному рядку через пропуск вивести спочатку периметр, а потім площу трикутника, обчислену з точністю до 4-х знаків після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 8%

Джерело: ДПА-2010 Варіант 25

 

ПРИКЛАД


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

 3 2 7 6.5 10 1 

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

 19.3568 17.7500


 

program p_925;

var x1,y1,x2,y2,x3,y3,d1,d2,d3,p,s:real;

function vidrizok(x1,y1,x2,y2:real):real;

  begin

    vidrizok:=sqrt(sqr(x1-x2)+sqr(y1-y2))

  end;

begin

  read(x1,y1,x2,y2,x3,y3);

  d1:=vidrizok(x1,y1,x2,y2);

  d2:=vidrizok(x1,y1,x3,y3);

  d3:=vidrizok(x3,y3,x2,y2);

  p:=(d1+d2+d3)/2;

  s:=sqrt(p*(p-d1)*(p-d2)*(p-d3));

  writeln(2*p:0:4,' ',s:0:4);

end.

 


#926 ФОРМУЛА ГЕРОНА

   Задано сторони a, b, c, d та діагональ f опуклого чотирикутника. Визначити площу чотирикутника, використовуючи допоміжну функцію обчислення площі трикутника за формулою Герона.

 

ТЕХНІЧНІ УМОВИ

 

Вхідні дані

У єдиному рядку задано через пропуск 5 чисел: a, b, c, d, f (0 < a, b, c, d, f ≤ 100), як це показано на рисунку.

 

Вихідні дані

Єдине число - площа чотирикутника, обчислена з точністю до 4-х знаків після десяткової крапки.

 

Ліміт часу: 0.5 секунди

Бали за пройдений тест: 4

Складність: 10%

Джерело: ДПА-2010 Варіант 26

 

ПРИКЛАД


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

 3 4 4 2 5 

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

 9.7997


 

program p_926;

var a,b,c,d,f,s:real;

function heron(a,b,c:real):real;

  var p:real;

  begin

    p:=(a+b+c)/2;

    heron:=sqrt(p*(p-a)*(p-b)*(p-c))

  end;

begin

  read(a,b,c,d,f);

  s:=heron(a,b,f)+heron(c,d,f);

  writeln(s:0:4);

end.

 


 

 

 

 

 

 

 

ЗМІСТ

 

 

 

 

Лінійні програми         3

 

Програми з розгалуженнями       11

 

Програми з циклами         21

 

Програми з використанням масивів     25

 

Програми з використанням рядків      37

 

Програми з використанням підпрограм     42


Для нотаток

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Гарнітура Arial, Arial Narrow, Book Antiqua, Uk_Decor

 

docx
Пов’язані теми
Інформатика, Інші матеріали
Додано
30 липня 2018
Переглядів
3197
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку