Орієнтовні завдання
ІІ (районного) етапу 2000 року

1. Графік, 10 балів
Графік функції y = f1(x) — ламана, що сполучає точки (0;0), (1/2;1/2), (1;0). Графік функції y = fn + 1(x) отримують з графіка y = fn (x) гомотетією (стискуванням) з коефіцієнтом 1/2, центром гомотетії (0;0) і долученням до образу стискування його копії, зсунутої на вектор v(1/2;0). Покладемо:

gn(x) = f1(x) + f2(x) + ⋯ + fn(x).

Створіть програму curve.*, яка:

2. Раціональні корені, 9 балів
Створіть програму roots.*, яка обчислить усі раціональні корені рівняння:

a0 + a1x + a2x2 + ⋯ + anxn = 0

з цілими коефіцієнтами.

Єдиний рядок вхідного файлу roots.dat містить у вказаному порядку натуральне число n і цілі числа an, an – 1, …, a1, a0, де n < 10. Для всіх j в межах від 0 до n включно | aj | < 1234567890, причому an відмінне від нуля.

Єдиний рядок вихідного файлу roots.res має містити розділені пропусками всі різні нескоротні дроби:

що є коренями рівняння. Спочатку вказувати корінь 0, якщо такий є. Далі корені впорядковано за зростанням знаменника, а для однакових знаменників — за зростанням абсолютної величини чисельника. Якщо є два протилежні раціональні корені, то спочатку вказувати від'ємний корінь. Відомо, що шукані чисельники і знаменники за абсолютною величиною не перевищують 123.

Приклад

roots.datroots.res
2 9 -25 -63 -2/9

Математична довідка. Якщо нескоротний дріб p/q є розв'язком вказаного рівняння з цілими коефіцієнтами, то: p — дільник a0, q — дільник an.

3. Лінійні рівняння, 20 балів
Створіть програму lirear.*, яка розв'яже систему n лінійних рівнянь з цілими коефіцієнтами відносно m змінних:

a11x1 + a12x2 + a13x3 + ⋯ + a1mxm = a1 (m + 1) ;
a21x1 + a22x2 + a23x3 + ⋯ + a2mxm = a2 (m + 1) ;
a31x1 + a32x2 + a33x3 + ⋯ + a3mxm = a3 (m + 1) ;

an1x1 + an2x2 + an3x3 + ⋯ + anmxm = an (m + 1) .

Перший рядок вхідного файлу liear.dat містить у вказаному порядку натуральні числа n і m. Для j в межах від 1 до n включно (j + 1)-ий рядок цього файлу містить послідовність цілих коефіцієнтів ajk, розділених пропусками, у порядку зростання k в межах від 1 до m + 1 включно. Відомо, що n · (m + 1) < 8000, а решта чисел вхідного файлу не перевищують 1234567890 за модулем.

Якщо система несумісна, то єдиний рядок вихідного файлу linear.res має містити вислів:

Система несумісна!

Якщо розв'язок системи єдиний, то єдиний рядок вихідного файлу linear.res має містити xj в порядку зростання j в межах від 1 до m включно.

Якщо розв'язків системи безліч, то j-ий рядок вихідного файлу linear.res має містити коефіцієнти j-го рівняння системи, отриманої в результаті застосування методу послідовного виключення змінних (методу Гауса) — всього (m + 1) число.

Числа одного рядка потрібно розділити пропусками. Всі числа потрібно подати нескоротним дробом (чисельник цілий, знаменник натуральний, якщо знаменник дорівнює 1, то дробову риску / і знаменник не вказувати). Для розв'язання задачі непотрібно подавати цілі числа масивами їхніх цифр.

Приклади

linear.datlinear.res
2 2
3 4 5
6 8 9
Система несумісна!


2 2
3 4 5
4 4 1
-4 17/4


2 2
6 8 10
9 12 15
1 4/3 5/3