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.*, яка:на весь екран монітора відобразить білим на чорному тлі:
після натискання клавіші Enter програма замінить графік y = gn(x) на графік y = gn + 1(x) — по 1 балу за кожний новий графік;
після отримання зображення графіка y = g9(x) і наступного натискання клавіші Enter програма припинить роботу.
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.dat | roots.res |
---|---|
2 9 -25 -6 | 3 -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.dat | linear.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 |