Вы находитесь на странице: 1из 1

II тур (районный) олимпиады школьников по информатике

Санкт-Петербург, 16 декабря 2000 года


A. Треугольники
На плоскости расположено N невырожденных треугольников. Найдите точку D. Наименьшее кратное подмножество
плоскости, которая покрывается наибольшим количеством треугольников. Если Задано множество из N натуральных чисел: X 1 , X 2 ,..., X N . Требуется найти
таких точек несколько, достаточно найти любую из них. Точка покрывается такое минимальное положительное M, чтобы можно было выбрать M чисел из
треугольником, если она лежит внутри него, либо на его границе. Треугольник заданного множества так, чтобы их сумма делилась на N. Например, для множества
задается координатами своих вершин. Ограничение на N поставьте сами. из пяти элементов
1 3 1 7 1
B. Волшебные вектора M=2, т.к. можно выбрать 2 числа (3 и 7), сумма которых 3+7=10 делится на N=5, а
Назовем упорядоченный по неубыванию набор из N натуральных чисел волшебным одно число кратное 5 выбрать нельзя.
N-вектором, если сумма этих чисел равна их произведению. Задано число N.
Найдите все волшебные N-вектора. Задано число N≤ 1000 и числа X 1 , X 2 ,..., X N . Найти соответствующее
Например, существует 3 волшебных 5-вектора: минимальное положительное M, либо выяснить, что такого M не существует, т.е.
1 1 1 2 5 нельзя выбрать из заданного множества несколько чисел, чтобы их сумма делилась
1 1 1 3 3 на N.
1 1 2 2 2
Ограничение на N поставьте сами. E. K двоичных единиц
Найдите количество чисел Z, удовлетворяющих неравенству A ≤ Z ≤ B , таких,
C. Интервалы что в записи двоичного разложения Z используется ровно K единиц. (
Петя совершил хакерский налет на сервер компании Macrohard, в результате чего 0 ≤ A, B ≤10 9 , 0 ≤ K ≤ 30 ) Например, если A=10; B=20; K=2, то таких чисел 5
ему достался объектный файл, в котором содержится скомпилированный код (это числа 10=10102; 12=11002; 17=100012; 18=100102; 20=101002).
некоторой функции secret. Эта функция берет в качестве параметра целое число Помните, что перебор всех чисел неэффективен, так как при данных ограничениях
и возвращает 0 либо 1. занимает слишком много времени.
Петя решил исследовать эту функцию и выяснить, что она делает. С этой целью он
хочет вызвать ее для всех чисел от 1 до 10 6 и те значения параметра, на которых F. Частотный анализ
функция выдает 1 вывести на экран. Однако, поскольку количество различных Дан текст, в котором встречаются слова, состоящие из букв русского и латинского
чисел, которые придется вывести на экран может оказаться очень велико, то Петя алфавитов и цифр, знаки препинания, пробелы и переводы строк. Требуется найти
хочет выводить их в виде интервалов подряд идущих чисел, причем если интервал количество вхождений каждого слова в этот текст и вывести слова
имеет длину 1, то выводить только одно число. Например, вместо отсортированными по невозрастанию этого количества. Для каждого слова при
1,3,4,5,6,7,8,10,12,20,21,22,23,24,… выводе в скобках указать количество его вхождений в текст. Например, для текста
Петя хочет выводить один, два - это 2, три один два, много слов один
1,3-8,10,12,20-24,… надо вывести
Напишите программу, которая выведет значения параметра, на которых функция один(3) два(2) это(1) 2(1) три(1) много(1) слов(1)
выдает 1, в нужном формате. Считайте, что Ваш язык программирования дополнен Слова, которые встречаются в тексте одинаковое количество раз, должны быть
функцией secret: выведены в том порядке, в котором они впервые встречаются в тексте.
function secret(x: longint): integer;
int secret(long int x);
function secret(x as long) as integer
Помните, что компьютер, на котором Петя запустит свою программу довольно
слабый, и у него мало оперативной памяти, поэтому хранить все значения, на
которых функция вернет 1 в памяти даже в виде интервалов может оказаться
невозможным.