1. ПРОСТА ЗАДАЧА?
Програма зчитує двоцифрове число і виводить через пропуск кожну цифру окремо.
Вхідні дані
Натуральне число на проміжку від 10 до 99 включно.
Вихідні дані
Спочатку першу цифру числа і через пропуск другу.
Ліміт часу 0.3 секунди
Ліміт використання пам'яті 256 MB
Вхідні дані | Вихідні дані |
23 | 2 3 |
СИР ДЛЯ АНФІСИ
Розрізаючи сир у задачі «Сир для Анфіси», у господаря залишалися куски сиру у вигляді прямокутного паралелепіпеда з різними цілими довжинами сторін. Готуючи нову страву із сиру для Анфіси, господарю прийшлося розрізати дані куски сиру на кубики зі стороною 1. Яку найменшу кількість розрізів приходилось йому робити, щоб розрізати дані куски сиру, якщо він кожного разу розрізав один кусок сиру на дві частини.
Вхідні дані
В єдиному рядку записано три числа А, B, C - довжини ребер куска сиру. 1 ≤ А, B, C ≤ 2000000000. 6
Вихідні дані Єдине число найменша кількість розрізів.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані | Вихідні дані |
2 3 4 | 23 |
Розв'язання задач!
Задача1.
Потрібно двоцифрове число розділити на цифри. Оскільки ми користуємося позиційною десятковою системою, то поділ числа на цифри виконується цілочисельним діленням даного числа на 10. Для цього використовуємо операції DIV та MOD.
var a:integer;
begin read(a);
writeln(a div 10,' ',a mod 10); end.
Задача2.
Задача з розділу лінійних програм, тому кількість розрізів не залежить від вибору порядку розрізання сторін і обчислюється за формулою. Виведемо її. Почнемо розрізати по стороні А і одразу розріжемо на максимальну кількість частин. Отримаємо А частин розміру 1*В*С і виконаємо А-1 розрізів. Далі ріжемо кожен з отриманих кусків по стороні В. Отримаємо А*В кусків розмірами 1*1*С, виконавши при цьому всього А*(В-1) розріз. Залишається виконати розрізання по стороні С. Буде виконано А*В*(С-1) розрізів. Усього маємо (А-1)+А*(В-1)+А*В*(С-1)=А-1+А*В-А+А*В*С-А*В=А*В*С-1 розрізів.
var a,b,c: int64;
begin read(a,b,c);
writeln(a*b*c-1);
end.