Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть сборника.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
488.45 Кб
Скачать

Шагающий циркуль Условие

Первоклассник нарисовал на бумаге две различные точки: A и B. Он воткнул ножку шагающего циркуля в точку A, другая ножка не касалась бумаги. Если он теперь воткнёт вторую ножку в произвольную точку плоскости, до которой дотягивается циркуль, а затем вытащит из бумаги первую ножку, то такое действие будет называться шагом циркуля.

Найти наименьшее количество шагов циркуля, которое нужно сделать, чтобы одна из его ножек оказалась в точке B. Раствор циркуля (т. е. длина шага) s может изменяться от s1 до s2 включительно (s1  s  s2).

Формат входного файла

Первая строка содержит вещественные числа xA yA xB yB — координаты точек A и B.

Вторая строка содержит вещественные числа s1 s2.

Формат выходного файла

Выходной файл должен содержать единственное целое число — минимальное количество шагов циркуля.

Ограничения

−70 < xA, yA, xB, yB < 70

1  s1  s2 < 100

Все входные данные имеют не более двух знаков после запятой и заданы точно (не содержат ошибки округления).

Примеры тестов

Входной файл

Выходной файл

1

1 1.5 3 0.5

1.0 1.2

2

Разбор

Пусть циркуль находится в точке M. Обозначим через K(M) множество точек, до которых циркуль может шагнуть из точки M. K(M) — это кольцо — множество точек X, для которых s1  MX  s2.

Обозначим через Di множество точек, до которых циркуль может дойти за i шагов. D0 включает в себя только точку A. D+ 1 равно объединению K(M) по всем M  Di. Так, D1 = K(A), D2 есть круг с центром в точке A радиуса 2s2, Di (i > 1) есть круг с центром в точке A радиуса is2.

Требуется найти наименьшее i, такое, что B  Di. Если B  D1, то i = 1. Если B  D1, то нужно решить неравенство AB  is2. Решение неравенства: . Минимальное i, удовлетворяющее неравенству, есть — частное , округлённое вверх. В случае, когда точка B лежит внутри круга с центром в точке A радиуса s1, решив неравенство, мы получим 1 вместо 2, поэтому этот случай нужно рассмотреть отдельно.

program compasses;

var

  xa, ya, xb, yb: real;

  l1, l2: real;

  d: real;

 

  function is_whole(x: real): boolean;

  begin

    is_whole := abs(x-round(x)) < 1e-6;

  end;

 

  function ceil(x: real): integer;

  begin

    if is_whole(x) then

      ceil := round(x)

    else

      ceil := trunc(x)+1;

  end;

 

begin

  assign(input, 'input.txt');

  reset(input);

  assign(output, 'output.txt');

  rewrite(output);

 

  read(xa, ya, xb, yb, l1, l2);

  d := sqrt(sqr(xb-xa) + sqr(yb-ya));

  if (d >= l1) and (d <= l2) then

    write(1)

  else if (d < l1) then

    write(2)

  else

    write(ceil(d/l2));

 

  close(input);

  close(output);

end.

Волшебные горшочки Бабы Яги Условие

В некотором царстве, некотором государстве жила-была Баба Яга. Однажды исполнилось Бабе Яге 500 лет, и она решила отпраздновать свой юбилей и позвала гостей: Кощея Бессмертного, Кота Баюна, Лешего, Водяного, Кикимору и других.

Было у Бабы Яги N волшебных горшочков. Все горшочки абсолютно одинаковы. Каждый горшочек готовит одно из M блюд, причём каждое из M блюд может быть приготовлено с одинаковой вероятностью (все блюда равновероятны).

Баба Яга любит разнообразие блюд на праздничном столе, поэтому она хочет, чтобы во всех горшочках блюда были разные. С какой вероятностью это случится?

Формат входного файла

Входной файл содержит целые числа N M.

Формат выходного файла

Выходной файл должен содержать вещественное число — вероятность того, что во всех горшочках блюда будут разные.

Ответ необходимо вывести с точностью не менее семи знаков после запятой.

Ограничения

1  N  9

1  M  9

Примеры тестов

Входной файл

Выходной файл

1

2 2

0.5

2

2 3

0.6666666667

3

1 4

1

Разбор

Вероятность того, что во всех горшочках блюда разные, равна отношению числа исходов, при которых во всех горшочках блюда разные, к общему числу исходов. В данном случае исход (элементарный исход) — это набор из N блюд (набор чисел a1, a2, ..., aN, где ai от 1 до M).

Общее число исходов равно MN, так каждое число может принимать любое из M значений, а всего чисел N штук.

Если M < N, то будут совпадения блюд (по принципу Дирихле). Значит, вероятность того, что все блюда разные, равна 0.

Рассмотрим случай M = N. Все блюда (все числа ai) разные тогда и только тогда, когда a1, a2, ..., aN — перестановка чисел от 1 до N. Из комбинаторики известно, что всего таких перестановок N! = 1·2·...·N. Значит, число исходов, при которых все блюда разные, равно N!.

Рассмотрим случай M > N. Число исходов, при которых все блюда разные (все числа a1, a2, ..., aN разные), равно числу способов выбрать N различных чисел из M чисел (от 1 до M), причём важно, в каком порядке числа расположены. Это число способов равно числу размещений из M по N

.

Таким образом, при M  N вероятность того, что все блюда разные, равна

.

program magical_pots;

var

N, M: integer;

p: extended;

i: integer;

begin

assign(input, 'input.txt');

reset(input);

assign(output, 'output.txt');

rewrite(output);

read(N, M);

if (M < N) then

write(0)

else

begin

p := 1;

for i := M downto M-N+1 do

p := p*i;

for i := 1 to N do

p := p/M;

write(p:0:10);

end;

close(input);

close(output);

end.