Алгоритмы. алгоритмы (5). A. Количество нулей на интервале 2)
Скачать 34.28 Kb.
|
A. Количество нулей на интервале (0.2)
Поступают запросы на вычисление количества нулей на некотором интервале заданного одномерного массива. Реализуйте эффективную обработку большого числа таких запросов. Формат вводаВ первой строке вводится одно натуральное число nn (1≤n≤107)(1≤n≤107) – количество чисел в массиве. Во второй строке вводятся nn чисел от 00 до 99 – элементы массива. В третьей строке вводится одно натуральное число kk (1≤k≤106)(1≤k≤106) – количество запросов на вычисление количества нулей. В следующих kk строках вводится по два числа ll и rr через пробел – номера левого и правого элементов отрезка массива (1≤l≤r≤n)(1≤l≤r≤n). Считается, что элементы нумеруются с единицы. Формат выводаВ одной строке – выведите через пробел количество нулей каждого запроса на соответствующем отрезке массива. Система оценки
Пример 1
Пример 2
Пример 3
Пример 4
B. НОД и простые числа (0.2)
Борис проходит отбор на стажировку в Яндекс, и в одном из заданий ему встречаются сразу две темы - наибольший общий делитель (НОД) и простые числа. Определение: наибольшим общим делителем двух целых положительных чисел AA и BB называют такое число GG, что: AA делится на GG нацело (GG является делителем AA); BB делится на GG нацело (GG является делителем BB); не существует числа HH такого, что GG < HH и HH удовлетворяет условиям 1 и 2. Определение: число PP называется простым, если у него есть ровно два различных делителя: 1 и само число PP. К примеру: число 1 не является простым, так как у него только один делитель — 1; 4 не простое, так как у 4 есть три делителя — 1, 2, 4; 6 не простое, так как у 6 четыре различных делителя — 1, 2, 3, 6. В качестве задания Борису необходимо решить следующую задачу: «Даны два целых положительных числа AA и BB, можно ровно один раз умножить либо AA, либо BB на любое простое число. Какого наибольшего значения НОД можно добиться с помощью такого умножения?» Пример: Пусть AA = 20, BB = 45. НОД(20, 45) = 5. При умножении числа AA на простое число 3 итоговый НОД(20 ⋅ 3, 45) = 15. При умножении числа BB на простое число 2 итоговый НОД(20, 45 ⋅ 2) = 10. Помогите Борису попасть в Яндекс. Формат вводаВ первой строке дано два целых положительных числа AA и BB (1≤A(1≤A, B≤1012)B≤1012). Формат выводаВыведите единственное целое число – наибольшее значение НОД, которого можно добиться умножением одного из чисел AA и BB на простое число. Система оценки
Пример 1
Пример 2
Пример 3
ПримечанияРассмотрим детально пример входных данных: Необходимо умножить число BB = 1 на простое число 7, тогда НОД(7, 1 ⋅ 7) = 7. НОД(12, 54) = 6. Для получения оптимального ответа необходимо умножить число AA = 12 на простое число 3. В таком случае НОД(12 ⋅ 3, 54) = НОД(36, 54) = 18, так как 54 = 18 ⋅ 3 и 36 = 18 ⋅ 2. Другой разрешенный, но неоптимальный вариант — умножить BB = 54 на простое число 2. В таком случае итоговый НОД(12, 54 ⋅ 2) = НОД(12, 108) = 12, так как 108 = 12 ⋅ 9. Неразрешенный, пусть и более оптимальный вариант — умножить AA = 12 на не простое число 9. В таком случае НОД(12 ⋅ 9, 54) = НОД(108, 54) = 54 > 18. Но так как 9 не является простым числом, такое умножение по условию задания делать нельзя. С. Теорема Лагранжа (0.2)
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы четырех точных квадратов. По данному числу nn найдите такое представление: напечатайте от 1 до 4 натуральных чисел, квадраты которых дают в сумме данное число. Формат вводаПрограмма получает на вход одно натуральное число nn (0≤n≤2⋅109)(0≤n≤2⋅109). Формат выводаПрограмма должна вывести от 1 до 4 натуральных чисел через пробел, квадраты которых дают в сумме данное число.
Пример 1
Пример 2
Пример 3
Пример 4
|