2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Бьют двое часов
Сообщение27.09.2023, 16:52 
Аватара пользователя


22/07/22

897
Мне выложить решение моей усложненной задачи или другие тоже заинтересовались? :roll:

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение27.09.2023, 20:10 


05/09/16
12064
Doctor Boom в сообщении #1611459 писал(а):
Мне выложить решение моей усложненной задачи или другие тоже заинтересовались? :roll:

Ну у меня получилось, что часы били немного меньше 15 минут :mrgreen:
До элегантной формулы я, впрочем, не добрался.

Мне кажется это хорошо бы в олимпиадный раздел и более обобщенно - имеются прогрессии с первым членом нулевым и разностями $d_i$ (у нас это $d_1=2,d_2=3,d_3=5,d_4=7$) и надо найти мощность объединенного множества их членов если количество членов каждой прогрессии $t$ или наоборот, чему равно $t$ если мощность множества равна $n$

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение28.09.2023, 17:49 


05/09/16
12064
Для проверки формул, кто какие придумает, программа на pari/gp:
bom(v,t)=my(b=Set(0));for(i=1,#v,b=setunion(b,Set(vector(t-1,n,n*v[i]))));return(#b)
На вход подаём вектор из темпов боя часов (секунд между ударами), и какой час пробить. Функция возвращает количество слышимых ударов. Если в коде функции убрать решётку, будет возвращать вектор из номеров секунд когда происходили удары.
Если часов двое, одни бьют раз в 2 секунды, вторые раз в 3 секунды и надо пробить 11 часов, то запускаем так:
? bom([2,3],11)
%1 = 18
?

Норм работает где-то до миллионов часов, дальше памяти надо больше гигабайта. Ниже считает полторы секунды:
? bom([2,3,5,7],10^6)
%1 = 2999999
?


pari/gp online: https://pari.math.u-bordeaux.fr/gp.html

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 01:07 
Аватара пользователя


22/07/22

897
wrest
У меня вышло 119 часов, у вас так же? :roll:

-- 30.09.2023, 01:13 --

Ваша прога со мной согласна 8-)

-- 30.09.2023, 01:14 --

wrest в сообщении #1611495 писал(а):
До элегантной формулы я, впрочем, не добрался.

А как решали? :roll:

-- 30.09.2023, 01:17 --

Я вообще удивлен, что ответ имеется, т.к. 357 ударов наугад выбрал :mrgreen: Если бы было 356 или 358 уже бы не было решения

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 01:17 


05/09/16
12064
Doctor Boom в сообщении #1611793 писал(а):
Ваша прога со мной согласна

Ну так она ж непосредственно считает, просто вычёркивая дубли.

-- 30.09.2023, 01:23 --

Doctor Boom в сообщении #1611793 писал(а):
А как решали?

Так прогой и решал.
Я покрутился туда и сюда... Вижу, что примерно треть и вокруг неё пляшет (а в вашем примере точно треть, $119=357\dfrac13$).
Но формула не вышла из меня.

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 01:25 
Аватара пользователя


22/07/22

897
wrest
Читерство :D А я решал как и прошлую легкую задачу, методом последовательных приближений (только через калькулятор)

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 01:42 


05/09/16
12064
Doctor Boom
Ну у нас выходит сколько-то (четыре в вашей постановке) интервалов времени (секунд). Первый -- пока бьют быстрые часы. С нулевой по $d_1t$=$2t$-ю секунду. В этом интервале ударами будут числа (номера секунд) не взаимно простые с $\prod \limits _{i>0} d_i=2\cdot 3 \cdot 5 \cdot 7=210$. Начиная с $d_1t+1=2t+1$ секунды по $d_2t=3t$-ю секунду ударами будут числа (номера секунд) не взаимно простые с $\prod \limits _{i>1} d_i =3 \cdot 5 \cdot 7=105$ и т.п., последний интервал (в нашем случае) с $5t+1$ по $7t$, там нужные нам числа только те, которые делятся на $7$ Вот и надо их посчитать, в каждом интервале... и записать красивую формулу.

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 04:41 
Аватара пользователя


22/07/22

897
wrest
Здорово, а как бы вы считали, ручками, на олимпиаде? :roll:
Я делал так, сначала $357-1=356$, секунду запоминаем. Потом $356$ нацело делим на $4$, получаем некое $a_0$, считаем $4a_0$ и потом из него вычитаем сначала все попарные совпадения секунд, потом по три, но уже складываем и т.д. с помощью формулы включений/исключений, получаем некое конечное $b_1$, потом нацело делим $356-b_1$ на $4$ и прибавляем к $a_0$, получаем $a_1$, и далее повторяем до тех пор, пока не найдем некое $b_i=356$, и тогда конечный ответ $a_i+1$

-- 30.09.2023, 04:46 --

wrest в сообщении #1611799 писал(а):
...и записать красивую формулу

эх, математики :mrgreen:

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 14:58 


05/09/16
12064
Doctor Boom в сообщении #1611805 писал(а):
Здорово, а как бы вы считали, ручками, на олимпиаде? :roll:

Ну формула-то у меня есть, просто она пока не помещается на полях этого форума :mrgreen:

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 19:34 


05/09/16
12064
В общем, формула такая.
Обозначим целочисленное деление обратным слэшем. Т.е.$a$\$b=\lfloor \frac ab \rfloor$.
Тогда количество ударов для случая четырёх бьющих часов с темпами в 2,3,5 и 7 секунд будет
n(t)=4*(t-1)-3*((t-1)\7)-2*((t-1)\5)-(t-1)\3+(t-1)\15+(t-1)\21-(t-1)\105+2*((t-1)\35)+1
Надо как-то свернуть её поплотнее, пока не придумал как именно.
Так уж и быть, запишу тексом :mrgreen:
$$n(t+1)=4t-3\left\lfloor \dfrac t7\right\rfloor -2\left\lfloor \dfrac t5\right\rfloor - \left\lfloor \dfrac t3\right\rfloor +\left\lfloor \dfrac {t}{3\cdot 5}\right\rfloor + \left\lfloor \dfrac {t}{3 \cdot7}\right\rfloor +2 \left\lfloor \dfrac {t}{5 \cdot 7}\right\rfloor -  \left\lfloor \dfrac {t}{3 \cdot 5 \cdot 7}\right\rfloor  +1$$

Выглядит загадочно... Наверняка люди придумали как привести такое выражение к одному знаменателю, но я таким знанием не обладаю.

Поясню как дошёл до жизни такой...
Я смотрел на то как растёт функция $n(t)$. Первые разности $D(t)=n(t+1)-n(t)$ равны $4, 4, 3, 4, 2, 3, 1, 4, 3,\dots$ Длина цикла равна $3\cdot 5 \cdot 7=105$ т.е. $D(i)=D(105k+i), k \in \mathb Z$
Единицы стоят там, где количество часов кратно 7. То есть единиц всего
$c1(t)=\left \lfloor \dfrac {t-1}{7} \right \rfloor$
Двойки там где делится на 5 за исключением номеров делящихся на 7, т.е. двоек всего
$c2(t)=\left \lfloor \dfrac {t-1}{5} \right \rfloor - \left \lfloor \dfrac {t-1}{5 \cdot7} \right \rfloor$
Тройки там, где номер делится на 3 за исключением тех где делится на 5 или 7, то есть
$c3(t)=\left \lfloor \dfrac {t-1}{3} \right \rfloor - \left \lfloor \dfrac {t-1}{3 \cdot 5}\right \rfloor - \left \lfloor \dfrac {t-1}{3 \cdot7}\right \rfloor+\left \lfloor \dfrac {t-1}{3 \cdot 5 \cdot7} \right \rfloor$
Ну а четвёрки - всё остальное.
$c4(t)=t-(c1(t)+c2(t)+c3(t))$
Осталось только сложить и добавить первый удар в нулевую секунду:
$n(t)=1\cdot c1(t)+2\cdot c2(t)+3 \cdot c3(t) + 4 \cdot c4(t) +1$

 Профиль  
                  
 
 Re: Бьют двое часов
Сообщение30.09.2023, 20:37 


05/09/16
12064
Doctor Boom в сообщении #1611805 писал(а):
а как бы вы считали, ручками, на олимпиаде?

Ну вот на калькуляторе бы и считал, хотя нацело делить вроде несложно и на бумажке.
Но это ещё конечно не олимпиадный уровень. Т.е. уровень обобщения пока недостаточный.

-- 30.09.2023, 20:42 --

Gepidium и Doctor Boom
Спасибо вам за задачу, интересно получилось.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group