1. Обертання, 14 балів
По периметру нерухомого правильного m-кутника зеленого кольору всередині останнього «котиться» правильний n-кутник жовтого кольору. Тут і далі колір фіґури — це колір контура фіґури і її внутрішніх точок. Довжина сторони n-кутника в l (натуральне число) разів більша за довжину сторони m-кутника. За t секунд n-кутник обертається за рухом годинникової стрілки навколо однієї з своїх вершин, яка нерухомо лежить на стороні m-кутника, на кут 180°/ k НСК(m,n). Тут НСК(m, n) — найменше спільне кратне чисел m і n. У початковий момент існує горизонталь, яка містить одну сторону m-кутника, що в свою чергу містить сторону n-кутника, причому ліві кінці цих сторін співпадають, а многокутники знаходяться не нижче вказаної горизонталі.
Створіть програму turn.*, яка:
зчитає з клавіатури у вказаному порядку одноцифрові натуральні числа m, n, l, k і дійсне число t;
зобразить початкове розташування багатокутників на чорному тлі, центроване й максимального розміру;
після натискання клавіші Enter показує покадрову зміну кожні t секунд зображення многокутників;
припиняє свою роботу після натискання довільної клавіші клавіатури.
Для вхідних даних 4 3 2 1 5 3-кутник повертається на 30° кожні 5 секунд всередині 4-кутника.
2. Числа, 25 балів
Створіть програму numbers.*, яка:
зчитає з вхідного файлу numbers.dat натуральні числа n і m, де n < 124, m < 1248;
запише у вихідний файл numbers.res ціле число, яке дорівнює кількості n-цифрових чисел, для кожного з яких сума всіх цифр дорівнює m.
Приклад
numbers.dat | numbers.res |
---|---|
5 3 | 15 |
3. Ділення многочленів, 10 балів
Створіть програму divide.*, яка поділить з лишком один многочлен на інший. Задачу розв'язати для степенів, що не перевищують 99, і цілих коефіцієнтів діленого та дільника. Розв'язання не потребує подання чисел масивами їхніх цифр, якщо:
Вхідний файл divide.dat містить у вказаному порядку степінь і цілі коефіцієнти діленого (тут і далі — у порядку спадання степенів), степінь і цілі коефіцієнти дільника.
Вихідний файл divide.res має таку структуру:
1-ий рядок - степінь і коефіцієнти частки;
2-ий рядок - степінь і коефіцієнти остачі.
Коефіцієнти многочленів подавати нескоротними дробами. Якщо знаменник дробу дорівнює 1, то дробову риску / і сам знаменник не записувати.
Приклад
divide.dat | divide.res |
---|---|
5 6 -17 25 -31 13 10 2 2 -3 1 |
3 3 -4 5 -6 1 -10 16 |