Розв'язки задач з програмування

вівторок, 7 листопада 2017 р.

Шоколадка





Степан вирішив пригостити однокласників шоколадками. 
Шоколадка коштувала N грн. З першого листопада вартість шоколадки 
збільшилась рівно на Р відсотків. Визначте скільки шоколадок зможе 
купити Степан на S грн після подорожчання.

Формат вхідних даних:

У першому рядку задано число N (1 ≤ N ≤ 107) - вартість шоколадки до 
подорожчання. У другому рядку Р (0 ≤ Р ≤ 100) - величина подорожчання 
шоколадки у відсотках. В третьому рядку - S (1 ≤ S ≤ 107) - сума грошей, 
яка є у Степана.

Формат вихідних даних:

Виведіть одне число - кількість шоколадок, які може купити Степан.

Приклад
Вхідні дані            25  5   100
Вихідні дані             3

  • джерело: районна олімпіада 2016-2017
  • автор розв'язку: Верхуша О.А.


                                 Розв'язок
var p,n, h, k, s : real; begin readln(n,p,s); s:=s*100; n:=n*100; k:=n + n*(p/100); h:= s/k; write(trunc(h)); end.

четвер, 2 листопада 2017 р.

Олімпіада


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

Приклад
Вхідні дані                9    30    0
                                        12   45  30
Вихідні дані              3    15   30

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок

var h1, h2,h3, m1, m2, m3, s1, s2, s3,k, k1, k2: longint; begin read( h1, m1, s1); read( h2, m2, s2); h3:= h2-h1; k1:= h1*3600+m1*60+s1; k2:= h2*3600+m2*60+s2; k:= k2-k1; h3:= k div 3600; k:= k mod 3600; m3:= k div 60; k:= k mod 60; s3:=k; Write(h3,' ',m3,' ',s3); end.

вівторок, 13 грудня 2016 р.

Трехзначные числа


Найти все трехзначные числа, сумма цифр которых равна n.
Входные данные
Одно число n (≤ ≤ 28).
Выходные данные
В первой строке выведите количество найденных трехзначных чисел. В последующих строчках выведите сами трехзначные числа в порядке возрастания.

Приклад
Вхідні дані                3
Вихідні дані              6
                 102
                 111
                 120
                 201
                 210
                 300

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок
var n,i,v,l,j:integer; a: array [1..1000] of integer; begin readln(n); v:=0; j:=1; for i:=100 to 999 do if (i mod 10)+((i div 10) mod 10)+(i div 100)=n then begin v:=v+1; a[j]:=i; j:=j+1; end; writeln(v); for l:=1 to j-1 do writeln(a[l]); end.

Прямокутний чи ні?



Задано довжини сторін трикутника. Визначити, чи є цей трикутник прямокутним.
Вхідні дані
У єдиному рядку задано 3 натуральні числа - довжини сторін трикутника. Довжини сторін не перевищують 1000.
Вихідні дані
Вивести "YES" (без лапок), якщо трикутник є прямокутним, або "NO" (без лапок) у протилежному випадку.
Приклад
Вхідні дані                3  5  4
Вихідні дані              YES

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок
var a,b,c:integer; begin read(a,b,c); if ((a*a)+(b*b)=(c*c)) then writeln('YES') else if ((a*a)+(c*c)=(b*b)) then writeln('YES') else if ((b*b)+(c*c)=(a*a)) then writeln('YES') else writeln('NO'); end.

Добуток цифр


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

Вхідні дані

Одне додатнє трицифрове число n.

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

Вивести добуток цифр числа n.
Приклад
Вхідні дані                235
Вихідні дані              30

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок
var n:integer; d:double; begin readln(n); d:=(n mod 10)*(n div 10 mod 10)*(n div 100); write(d:0:0); end.

Який трикутник?


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

Вхідні дані

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

Вихідні дані

Вивести 1, якщо трикутник рівносторонній, 2 - якщо рівнобедрений і 3 - якщо різносторонній.
Приклад
Вхідні дані                3  4  3
Вихідні дані              2

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок
var a,b,c:longint; begin readln(a,b,c); if (a=b) and (a=c) and (b=c) then writeln(1); if (a=b) and (a<>c) and (b<>c) then writeln(2); if (a<>b) and (a=c) and (b<>c) then writeln(2); if (a<>b) and (a<>c) and (b=c) then writeln(2); if (a<>b) and (a<>c) and (b<>c) then writeln(3); end.

Обмін


У різдвяний вечір у віконці стояло три квіточки, зліва на право: герань, крокус та фіалка. Кожен ранок Маша витирала віконце і міняла містами стоявшу праворуч квіточку з центральною кввточкою. А Таня кожен вечір поливала квіточки і міняла місцями ліву та центральну квіточку. Потрібно визначити порядок квітів вночі після того, як пройде k днів.
Вхідні дані
Перший рядок містить кількість тестів m (1 ≤ m ≤ 12). В кожному з наступних m рядків знаходиться кількість днів (≤ 1000).
Вихідні дані
Вивести m рядків, що містять по три латинських літери: "G", "C" и "V" (великі літери без пропусків), які описують порядок квітів на вікні по закінченню k днів (зліва направо). Позначення: G – герань, C – крокус, V – фіалка.

Приклад
Вхідні дані                2     1  5
Вихідні дані             VGC     CVG

  • джерело: e-olymp.com
  • автор розв'язку: Верхуша О.А.

                                 Розв'язок
var s1,s2,s3,a,c,d:string; k,m:integer; begin readln(m); while m > 0 do begin readln(k); s1:='V'; s2:='G'; s3:='C'; if k=1 then a:=s1+s2+s3; while (k<>1) do begin d:=s1; s1:=s2; s2:=d; c:=s1; s1:=s3; s3:=c; a:=s1+s2+s3; k:=k-1; end; writeln(a); dec(m); end; end.