|
Лекции по структурам и алгоритмам обработки данных (СиАОД) 4Задачи для самостоятельного решения
В массив A1, A2,…, AN помещены числа 2, 3,..., N+1 так, что каждое значение Ai делится на i. Сколько способов такого размещения? Ввод из файла INPUT.TXT. В единственной строке вводится значение N. Вывод в файл OUTPUT.TXT. В единственной строке выводится количество вариантов размещения.
Ввод 1 Ввод 2 Ввод 3 6 3 11 Вывод 1 Вывод 2 Вывод 3 1 2 8
5.2. Колесо Фортуны (4) Развлекательный телеканал транслирует шоу «Колесо Фортуны». В процессе игры участники шоу крутят большое колесо, разделенное на сектора. В каждом секторе этого колеса записано число. После того как колесо останавливается, специальная стрелка указывает на один из секторов. Число в этом секторе определяет выигрыш игрока. Участник шоу заметил, что колесо в процессе вращения замедляется из-за того, что стрелка задевает за выступы на колесе, находящиеся между секторами. Если колесо вращается с угловой скоростью v градусов в секунду, и стрелка, переходя из сектора X к следующему сектору, задевает за очередной выступ, то текущая угловая скорость движения колеса уменьшается на k градусов в секунду. При этом если v ≤ k, то колесо не может преодолеть препятствие и останавливается. Стрелка в этом случае будет указывать на сектор X. Участник шоу собирается вращать колесо. Зная порядок секторов на колесе, он хочет заставить колесо вращаться с такой начальной скоростью, чтобы после остановки колеса стрелка указала на как можно большее число. Колесо можно вращать в любом направлении и придавать ему начальную угловую скорость от a до b градусов в секунду. Требуется написать программу, которая по заданному расположению чисел в секторах, минимальной и максимальной начальной угловой скорости вращения колеса и величине замедления колеса при переходе через границу секторов вычисляет максимальный выигрыш. Ввод из файла INPUT.TXT. Первая строка входного файла содержит целое число N — количество секторов колеса (3 ≤ N ≤ 100). Вывод в файл OUTPUT.TXT. В выходном файле должно содержаться одно целое число — максимальный выигрыш. Пример Ввод 1 Ввод 2 Ввод 3 5 5 5 7 3 1 2 3 4 5 1 2 3 4 5 5 4 3 2 1 3 5 2 15 15 2 2 5 2 Вывод 1 Вывод 2 Вывод 3 5 4 5
5.3. Упорядоченные дроби (6) Требуется написать программу, которая выводит в порядке возрастания все несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают N. Ввод из файла INPUT.TXT. Входной файл содержит целое число N (2 ≤ N ≤ 255). Вывод в файл OUTPUT.TXT. В выходной файл необходимо вывести все дроби по одной в каждой строке. Пример Ввод 5 Вывод
5.4. Делители (8) Будем называть нормальным набор из k чисел (a1, a2, …, ak), если выполнены следующие условия:
Требуется написать программу, которая по заданным значениям N и k определяет количество нормальных наборов из k делителей числа N. Ввод из файла INPUT.TXT. Первая строка входного файла содержит два целых числа: N и k (2 ≤ N ≤ 108, 2 ≤ k ≤ 10). Вывод в файл OUTPUT.TXT. В выходном файле должно содержаться одно число — количество нормальных наборов из k делителей числа N. Примеры Ввод 1 Ввод 2 90 3 10 2 Вывод 1 Вывод 2 16 4 6. Длинная арифметика Длинная арифметика позволяет производить точные вычисления с многоразрядными целыми числами без потери точности. Длинными будем называть целые числа, которые записываются в какой-либо системе счисления строкой из своих цифр. При выполнении арифметических операций удобно для выравнивания представлять числа от младших разрядов к старшим. Короткими будем считать числа, представленные стандартными целыми типами.Ниже приводится простой вариант процедур и функций длинной арифметики [2]. Такой подход неэкономичен как по памяти, так и по скорости. Память используется неэффективно, так как для записи каждой цифры используется полный байт. Длина числа не хранится, а находится при вычислениях либо просто не используется, что снижает скорость. К тому же все вычисления производятся в десятичной системе счисления. В системах счисления с основанием 2 операции целочисленного деления и нахождения остатка можно свести к битовым операциям сдвигов, которые выполняются быстрее. Тем не менее, приводимый вариант реализации длинной арифметики пригоден для большинства практических задач и прост в применении. Более полное описание проблем, связанных с длинной арифметикой, можно найти в [3].
Маг. Имеется N супружеских пар. Маг должен определить, кто кому супруг. Какова вероятность угадать ровно K раз из N? Ввод из файла INPUT.TXT. В первой задаются через пробел строке K и N (1 ≤ N ≤ 100, 0 ≤ K ≤ N). Вывод в файл OUTPUT.TXT вероятности угадать ровно K раз из N в виде несократимой дроби либо единственного значения 0. Примеры Ввод 1 Ввод 2 2 5 9 10 Вывод 1 Вывод 2 1/6 0 Пронумеруем, например, мужчин от 1 до N. Сейчас нужно найти вероятность такого расположения женщин в позициях от 1 до N, чтобы ровно K из них соответствовали позиции своего мужа.Пусть D(N) – функция, определяющая количество перестановок из N элементов 1, 2, …, N, в которых ни один из элементов не остается на своем месте. Такие перестановки называются беспорядками. Тогда ответ задачи определяет выражение PNK = (CNK D(N-K)) / N! = D(N-K)) / K! (N-K)! (1) Действительно, для каждого набора из K элементов, остающихся на своих местах, существуют D(N-K) перестановок остальных элементов, а общее число перестановок N! Остается найти способ вычисления функции D(N). Очевидно, что D(1) = 0, D(2) = 1, D(3)=2 - перестановки (2, 3, 1) и (3, 1, 2). При N = 4 существуют 9 перестановок с элементами не на своих местах: (2, 1, 4, 3), (2, 3, 4, 1), (2, 4, 1, 3), (3, 1, 4, 2), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 3, 1, 2), (4, 3, 2, 1), т.е. D(4)=9. Докажем приведенную в [1] без доказательства рекуррентную формулу D(N+1) = N ( D(N) + D(N-1)) (2) Возможны два варианта:
Суммирование по обоим вариантам доказывает рекуррентную формулу (2). В соответствии с ней, например, D(5) = 44. Можно получить более очевидное, но и более сложное по форме соотношение для D(N+1). Всего имеется (N+1)! перестановок из N+1 элементов. Число перестановок с единственным элементом на своем месте составляет CN+11 D(N), с двумя на своих местах CN+12 D(N-1) и т. д. Ровно N элементов на своих местах быть не может, так как и последний элемент в этом случае на своем месте. Вычитая из общего числа перестановок количество случаев, когда хотя бы один элемент находится на своем месте, получим формулу D(N+1)= (N+1)! - CN+11 D(N) - CN+12 D(N-1) -…- CN+1N-1 D(2) – 1 Единица соответствует случаю, когда все элементы на своих местах. Примеры:
|
Loading
|