КМ 29. Монеты

Задача

Задача из журнала «Квант» №6 1970 г. стр. 28 В.И.Арнольд

[latex]n[/latex] одинаковых монет лежат на столе, образую замкнутую цепочку. Сколько оборотов сделает монета [latex]M[/latex] такого же размера за то время, пока она один раз обкатится по внешней стороне всей цепочки, как показано на рисунке (монета [latex]M[/latex] =2 коп.)?
Как изменится ответ, если монета [latex]M[/latex] будет иметь радиус, отличающийся в [latex]k[/latex] раз от радиуса каждой из монет в цепочке?

Условие
Представлю вам предложенное для данной задачи изображение из самого журнала.

Тесты

Входные данные Выходные данные
 № [latex]n[/latex] [latex]k[/latex]  Количество оборотов
 1  3  1  3
 2  12  1  6
 3  182  1  62.667
4  12  2.22 3.19998
 5  145  2.28101  22
 6  8  0.53884  8

 

Код.

 

Решение.

Примем радиус монет, составляющих цепочку, за единицу. За то время, пока монета радиуса [latex]k[/latex] прокатится по дуге [latex]\alpha[/latex] неподвижной окружности радиуса 1, она повернется на угол [latex]\alpha(1+1/k)[/latex] следовательно весь угол на который повернётся монета, равен [latex]\alpha+\alpha/k[/latex](в частности, при [latex]k[/latex]=1 этот угол равен 2[latex]\alpha[/latex]).
Теперь найдем сумму дуг,состоящих из таких точек неподвижных монет, которых монета [latex]M[/latex] касалась при качении по цепочке. Если принять центры монет цепочки за точки [latex]O_1[/latex], [latex]O_2[/latex], … , [latex]O_n[/latex], то сумма дуг, лежащих внутри многоугольника [latex]O_1[/latex][latex]O_2[/latex]…[latex]O_n[/latex], равна сумме его внутренних углов, то есть [latex]\pi(n-2)[/latex]. Сумма дуг, лежащих вне многоугольника, следовательно, равна [latex]\pi(n+2)[/latex].Из неё нужно вычесть ещё сумму дуг лежащих в углублениях между двумя соседними монетами, в которые [latex]M[/latex] не попадает. В каждом из [latex]n[/latex] углублений сумма двух таких дуг равна [latex]2\pi/3[/latex] при [latex]k[/latex]=1 и [latex]2arccos\frac{1}{k+1}[/latex] в общем случае. Итак, сумма дуг, по которым прокатится монета [latex]M[/latex], равна [latex]\pi(n+2)-2\pi n/3[/latex] (в общем случае [latex]\pi(n+2)-2n\arccos\frac{1}{k+1}[/latex]. Чтобы узнать искомое число оборотов, нужно умножить эту велечину на [latex]2[/latex]( в общем случае на [latex]1+1/k[/latex]) и разделить на 2[latex]\pi[/latex].
А значит ответ ([latex]\frac{n}{3}+2[/latex]) оборота при k=1, и [latex]\frac{k+1}{2k}(n-\frac{2}{\pi}n \arccos\frac{1}{k+1}+2)[/latex] оборота в общем случае.

Ссылка на решение:Ideone

Related Images:

Ю1.14

Задача. Русские неметрические единицы длинны: 1 верста = 500 саженей; 1 сажень = 3 аршина; 1 аршин = 16 вершков; 1 вершок = 44,45 мм. Длинна некоторого отрезка составляет P метров. Перевести её в русскую неметрическую систему.

Тесты:

P(м) Результат Комментарий
 0  Длинна отрезка P равна нулю.  Пройден
 1  Длинна отрезка P — 1 аршин 6 вершков.  Пройден
 99  Длинна отрезка P — 46 саженей 1 аршин 3 вершка.  Пройден
345999 Длинна отрезка P — 324 вёрст 166 саженей 2 аршина 4 вершка.  Пройден
-9999  Не имеет смысла.  Пройден
Вот код.

 

Идея такой записи пришла мне в голову еще недели 2-3 назад. Я отлично понимаю что есть способы записать все это в более простом виде но…работает(хоть и не очень шустро) и это главное.

Из задачи ясно, что нам нужно перевести некоторый отрезок P из метров в русскую неметрическую систему измерения, в нашем случае как я понял мы должны использовать исключительно 4 меры длинны: верста, сажени, аршины и вершки. Я записал 5 переменных в тип «float» для 5-ти единиц измерения, затем для 4-х из них записал еще 4 переменные в тип «int«, обозначающие соответствующие им, но в виде целого числа переменные. Сделал я это для того чтобы все соответствующие переменные записать в виде целых чисел, а так же для того чтобы выделить разность целого числа и числа с плавающей точкой и перевести её в меньшую единицу измерения, затем сделав тоже самое с последующими переменными до тех пор пока не дойду до наименьшей единицы измерения.

 

Related Images: