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

1.  Сашко часто замовляє подарунки в Інтернеті. Нещодавно він почав користуватися онлайн сервісом від компанії "Booble". Для завершення замовлення треба ввести "код підтвердження" у спеціальну форму на сайті компанії. Але не все так просто! Для обчисленн коду треба виконати декілька арифметичних операцій, які складно зробити усно, але можна автоматизувати за допомогою комп’ютерної програми. Отже, спочатку онлайн-вервіс надсилає СМС, яке містить два числа: N - число з чотирьох цифр та М - число від 1 до 128. Далі код підтвердження обчилюється за формулою:
Пропонуємо Вам скласти алгоритм обчислення коду підтвердження.
Вхід:
 У вхідному файлі записано два числа N і М.
Вихід: У вихідний файл виведіть одне число - "Код підтвердження".
Приклад:
Вхід:                                 Вихід:
1234 10                               43210

Виділяємо всі цифри першого числа і за формулою формуємо відповідь.

program booble;
var
  n, m, k, a, b, c, d: longint;
begin
  readln(n, m);
  a := n div 1000;                       // виділяємо першу цифру
  b := n div 100 mod 10;             // виділяємо другу цифру
  c := n div 10 mod 10;                // виділяємо третю цифру
  d := n mod 10;                           // виділяємо четверту цифру
  k := a * m + b * sqr(m) + c * sqr(m) * m + d * sqr(m) * sqr(m);
  writeln(k);
end.
2. Компанія спеціалізується на пошуку інформації про подарунки у всесвітній мережі Інтернет. Кожен день на сайті компанїї діє суперакція : "Усі подарунки, знайдені 11:11:11 можна отримати безкоштовно!"
Сашко захотів скористатися найближчою акцією. З’ясуйте, скільки часу є в Сашка на роздуми про подарунок.
Вхід:
У вхідному файлі записано три чиссла Н, М і S - годиниа, хвилини і  секунди - час, коли Сашко дізнався про супер акцію.
Вихід:
У вихідний файл виведіть одне число - кількість секунд, які залишились у Сашка на роздуми про подарунок.
Приклади:
Вхід:                                Вихід:
11 10 10                            61
11 11 10                            1
11 11 11                            86400

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

program booble;
var
  h, m, s, s1, s2: longint;
begin
  readln(h, m, s);
  s1 := h * 3600 + m * 60 + s;
  s2 := 11 * 3600 + 11 * 60 + 11;
  s := (s2-s1+86400-1) mod 86400+1;
  writeln(s);
  end.

3.  Компанія на початку року відкрила три нових філії в Харкові. У кожної філії в банку є поточний рахунок, на якому за рік роботи накопичилася певна сума грошей. З метою оптимізації витрат на аренду приміщень компанія вирішила об’єднати три філії в одну. Відповідно, також треба об’єднати й банківські рахунки. Банк може перевести всі гроші з одного  рахунку в інший та закрити порожній рахунок. За таку операцію банк бере собі винагороду в розмірі Р відсотків від суми об’єднаних рахунків, що списується з об’єднаного рахунку.
Вам дручено розрахувати, скільки грошей буде на рахунку обєднаної філії компанії. Зверніть увагу, що від послідовності закриття банківських рахунків залежить розмір винагороди банку, тому треба цю винагороду мінімізувати!
У першому рядку вхідного файлу записано три цілих числа: стан поточних рахунків трьох філій компанії. У другому рядку записано натуральне число Р - відсоток ві суми об’єднаних рахунків, який забирає собі банк.
У віхідний файл виведіть одне число -  суму, яка буде на рахунку об’єднаної філії.
Приклад:
Вхід:                                 Вихід:
100 200 300                      513.00
10

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

program raxunok;
var
  r1, r2, r3, a: longint;
  rez, p: real;
begin
  readln(r1, r2, r3);
  readln(p);
  p := 1 - p / 100;
  if r1 > r3 then begin a := r1;r1 := r3;r3 := a; end;
  if r2 > r3 then begin a := r2;r2 := r3;r3 := a; end;
  rez := (r1 + r2) * p;
  rez := (rez + r3) * p;
  writeln(rez:6:2);
end.

4. Якщо користувач знайшов потрібний йому поарунок, онлайн-сервіс компанії намагається "втюхати" цей подарунок користувачеві та отрибмати прибуток для компанії. Але не завжди ціна подарунку є привабливою для покупця, тому програмісти компанії розробили алгоритм "динамічного формування знижки":
нехай N - "номінальна" ціна подарунка, тобто не можна продати подарунок дешевше; нехай M - ціна , яку запропонував онлайн-сервіс компанії; якщо ціна М не влаштовує потенційного покупця, то вона може бути зменшена на добуток ненульових цифр числа М; таку знижку алгоритм може робити декілька разів. Пропонуємо Вам самостійно реалізувати цей алгоритм та дізнатися, який мінімальний прибуток зможе отримати компанія від продажу поарунка.
Вхід:
У вхідному файлі записано два числа: М - ціна, яку запропонував онланй-сервіс, і N = "номінальна" ціна подарунка.
Вихід:
У вихідний файл виведіть мінімальний прибуток, який компанія зможе отримати від продажу подарунка.

Приклад
Вхід:                                    Вихід:
100 11                                       7

5. Напередодні Нового Року анонімний клієнт із Лапландії замовив на сайті компанії цілу купу подарунків. Під час доставки товарів несподівано виник невеликий конфлікт при проходженні митного контролю. Митники, дізнавшись імя замовника, забажали й собі декілька маленьких подаруночків. Після довгих переговорів конфлікт було вичерпано: митники забирають декілька найдешевших подарунків, а клієнт оплачує всі інші подарунки.
Вхід:
У першому рядку вхідного файлу записано два числа: N- кількість подарунків, яку замовив анонімний клієнт із Лапландії і К - кількість подарунків, які забажали митники. У другому рядку подано числа -ціни кожної позиції замовлення.
Вихід:
У вихідний файл виведіть суму, яку заплатить анонімний клієнт із Лапландії.

Приклад:
Вхід:                                                      Вихід:
5 2                                                          250
50 5 100 10 100

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

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