Задачи очного тура региональной олимпиады по информатике 2000
1. Слияние чисел
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (2)
Слить два натуральных числа в новое число, вставив цифры одного числа между цифрами другого числа, сохранив при этом порядок следования цифр в исходных числах. Новое число должно быть максимальным из всех возможных.
Ввод
Во входном файле содержатся две строки, в каждой строке по одному натуральному числу длиной до 100 цифр.
Вывод
В выходной файл вывести полученное при слиянии число, максимальное из возможных.
2. Полином
Ограничения: время – 100ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Некоторый многочлен представлен в виде произведения
двучленов первой степени вида `(x+a_1)*(x+a_2)*…*(x+a_n)`.
Напечатать этот многочлен в стандартной форме
`x^n+b_1*x^{n-1}+…+b_{n-1}*x+b_n`. При этом `c*x^k` выводится как `c`*X^`k`
(например, 5*X^8), но если коэффициент `c` равен 0, то слагаемое не выводится,
если `|c|` равен 1, а `k\ >\ 0`, то выводится только знак коэффициента `c`
(например, -X^3), если `k=1`, то степень не выводится
(например, 5*X), а если `k=0`, то выводится только `c`.
Слагаемые должны выводиться в порядке уменьшения степени множителя `x^k`.
Во входном файле в первой строке содержится число `n` (`1\ ≤\ n\ ≤\ 9`) – количество
двучленов, далее идет `n` строк, в каждой строке по одному
целому числу от `-10` до `10` – коэффициенты `a_i` перемножаемых двучленов.
В выходной файл вывести многочлен в указанной стандартной форме.
Пример вывода 2
X^2+2*X+1
3. Периметр треугольника
Ограничения: время – 100ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Найти периметр треугольника, образованного пересечением
трех непараллельных друг другу прямых. Прямые задаются
коэффициентами `A`, `B` и `C` функциональной зависимости `Аx\ +\ "By"\ =\ C`,
где `A` и `B` не обращаются одновременно в ноль.
Во входном файле содержится три строки, в каждой строке
задаются коэффициенты `A`, `B` и `C` для одной прямой через пробел.
Все коэффициенты целые, не превосходящие по модулю 100.
Периметр получившегося треугольника не превосходит 1000.
В выходной файл вывести периметр треугольника с точностью 3 знака
после десятичной точки.
Пример ввода
0 1 1
1 0 1
4 3 13
4. Проблема Гольдбаха
Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В 1742 г. Христиан Гольдбах, немецкий математик-любитель, послал письмо Леонарду Эйлеру, в котором он сделал предположение, что всякое целое число, большее и равное шести, может быть представлено в виде суммы трех простых чисел. В ответ Эйлер заметил, что для решения этой задачи достаточно доказать, что каждое четное число есть сумма двух простых. К настоящему времени удалось доказать, что всякое достаточно большое нечетное число представляется в виде суммы трех простых чисел, а задача о разбиении четного числа на сумму двух простых еще не решена.
Ваша задача – проверить предположение Гольдбаха для некоторых чисел от 6 до 1000000 (как четных, так и нечетных).
Ввод
Во входном файле содержится несколько (до 1000) строк, в каждой строке задается одно целое число от 6 до 1000000. Конец списка чисел завершается строкой с числом 0.
Вывод
В выходной файл вывести для каждого числа разложение в виде суммы трех простых чисел, как показано в примере. Если возможно несколько разложений, то вывести одно из них. Если разложения не существует, то вывести сообщение "Для числа X гипотеза Гольдбаха неверна". Для завершающей строки с числом 0 в выходной файл ничего не выводить.
Пример вывода
44=2+5+37
6=2+2+2
13=3+5+5
5. Куча мала
Ограничения: время – 200ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
На столе кучей вывалено 50 счетных палочек (для удобства идентификации все палочки пронумерованы числами от 1 до 50). Брать из кучи можно только по одной палочке и только свободные палочки, на которых не лежат другие палочки. Требуется определить минимальное количество палочек, которые нужно убрать, чтобы освободить палочку с указанным номером. Например, чтобы освободить палочку с номером 3, нужно убрать палочку с номером 5, затем 1, а затем 4 (всего три палочки).
Ввод
Во входном файле содержится несколько строк. В первой строке содержится одно целое число от 1 до 50 – номер палочки, которую нужно освободить. В следующих строках содержится по два целых числа а и b от 1 до 50 через один пробел, означающих, что на палочке с номером a лежит, непосредственно соприкасаясь, палочка c номером b. Конец списка завершается строкой с числами 0 0.
Вывод
В выходной файл вывести минимальное число палочек, которое нужно убрать, чтобы освободить палочку с заданным номером, либо –1, если освободить палочку не удастся
Пример ввода
3
1 5
2 5
3 4
9 3
3 1
0 0