2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Среднее кратных чисел
Сообщение19.09.2021, 11:39 


20/12/14
123
Знакомая решала задачу на Python:
Найти среднее арифметическое чисел из интервала $[a, b]$ кратных данному $c$

Они там проходят циклы, а я вот подумал: как найти результат одной формулой?
Для упрощения будем считать, что $0 \leqslant a \leqslant b, c > 0$.
Хотелось бы найти формулу, использующую только арифметические операции и
целочисленное деление (//).

У меня получилось только так (% - остаток от деления):

Код:
if a % c == 0: 
    first = a 
else: 
    first = (a // c + 1) * c 
   
last = c * (b // c) 

if first > last: 
    print(0) 
else:
    print((first + last) / 2)


Мне кажется, должно получиться убрать условия и свернуть все в формулу...

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 14:04 


20/04/10
1776
Если $\left\lfloor\frac{ b}{ c}\right\rfloor-\left\lceil\frac{ a}{ c}\right\rceil+1\ne 0$, то среднее равно $\left(\left\lfloor\frac{ b}{ c}\right\rfloor+\left\lceil\frac{ a}{ c}\right\rceil\right)\frac{ c}{2},$ иначе среднее неопределено.

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 15:42 


06/09/12
890
denny в сообщении #1532076 писал(а):
Хотелось бы найти формулу, использующую только арифметические операции и
целочисленное деление (//).
Наверное, вычисление остатка не объехать. Но можно чуть короче.
Код:
lst = [t for t in range(a, b+1) if t%c == 0]
print(sum(lst) / len(lst))

А, прошу прощения, циклы тоже нельзя!

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 18:53 


20/12/14
123
statistonline в сообщении #1532103 писал(а):
А, прошу прощения, циклы тоже нельзя!

Да, это должно быть решение в формуле

lel0lel в сообщении #1532084 писал(а):
Если $\left\lfloor\frac{ b}{ c}\right\rfloor-\left\lceil\frac{ a}{ c}\right\rceil+1\ne 0$, то среднее равно $\left(\left\lfloor\frac{ b}{ c}\right\rfloor+\left\lceil\frac{ a}{ c}\right\rceil\right)\frac{ c}{2},$ иначе среднее неопределено.

Это очень близко. Если правильно понимаю, для положительных чисел $\left\lfloor\frac{ x}{ y}\right\rfloor \equiv x//y$.
Надо еще обдумать исключения

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 19:48 


20/04/10
1776
Замечу ещё раз, что если на интервале кратных числу $c$ чисел нет, то правильный ответ, что среднее неопределенно, неправильно возвращать значение ноль.

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 20:23 


20/12/14
123
lel0lel в сообщении #1532120 писал(а):
Замечу ещё раз, что если на интервале кратных числу $c$ чисел нет, то правильный ответ, что среднее неопределенно, неправильно возвращать значение ноль.

Да, понимаю!

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 21:51 


20/12/14
123
Но есть другой вопрос. Если есть операция "целочисленное деление $x//y$", то $\left\lfloor x/y \right\rfloor$ эквивалентна ей, а вот как выразить $\left\lceil x /y \right\rceil$?

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:00 


20/04/10
1776
$\left\lceil x /y \right\rceil=\left\lfloor (x+y-1) /y \right\rfloor$ для натуральных.

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:04 


06/09/12
890
lel0lel в сообщении #1532084 писал(а):
Если $\left\lfloor\frac{ b}{ c}\right\rfloor-\left\lceil\frac{ a}{ c}\right\rceil+1\ne 0$, то среднее равно $\left(\left\lfloor\frac{ b}{ c}\right\rfloor+\left\lceil\frac{ a}{ c}\right\rceil\right)\frac{ c}{2},$ иначе среднее неопределено.
Не совсем понял один момент: если, например, рассмотреть случай $a=0, b=10, c=17$, то условие выполняется, среднее считает $8,5$, но должно же быть не определено?

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:10 


20/04/10
1776
Почему неопределенно, ведь ноль кратен 17-ти. Среднее равно нулю, что и даёт формула.

Вообще тут обычная арифметическая последовательность, уж её среднее найти не составляет труда. Честно говоря, задача не вполне олимпиадная.

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:26 


20/12/14
123
lel0lel в сообщении #1532133 писал(а):
Почему неопределенно, ведь ноль кратен 17-ти. Среднее равно нулю, что и даёт формула.

Вообще тут обычная арифметическая последовательность, уж её среднее найти не составляет труда. Честно говоря, задача не вполне олимпиадная.

Согласен, вообще сам это придумал ))
Олимпиадность думаю все же есть, если требовать выразить результат только через $// \equiv \left\lfloor\right\rfloor$
Но я уже увидел ваш ответ, и нашел еще один вариант, более громоздкий, правда:
$\left\lceil x \right\rceil = \left\lfloor x \right\rfloor - \left\lfloor \left\lfloor x \right\rfloor - x \right\rfloor$

-- 19.09.2021, 23:33 --

Итак, если сверх арифметических операций использовать только целочисленное деление,
то получаем:
Код:
foo = (a + b - 1) // c
bar = b // c

if foo == bar + 1:
    result = 'Undefined'
else:
    result = (foo + bar) * c / 2

print(result)

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:35 


20/04/10
1776
Только это для натуральных, если числа вещественные, то используйте ваш вариант.

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:35 


21/05/16
4292
Аделаида
$\lceil x\rceil=-\lfloor-x\rfloor$. Если правильно помню, то в Питоне a // b совпадает с $\lfloor\dfrac ab\rfloor$ даже при отрицательных $a$ (насчёт отрицательных $b$ совсем не уверен).

 Профиль  
                  
 
 Re: Среднее кратных чисел
Сообщение19.09.2021, 22:43 


20/12/14
123
kotenok gav в сообщении #1532137 писал(а):
$\lceil x\rceil=-\lfloor-x\rfloor$. Если правильно помню, то в Питоне a // b совпадает с $\lfloor\dfrac ab\rfloor$ даже при отрицательных $a$ (насчёт отрицательных $b$ совсем не уверен).


Да, есть такое. Я подумал об этом. Но дело в том, что действительно, целочисленное деление для натуральных чисел в Питоне и в абсолютном большинстве языков программирования совпадает с $\left\lfloor\right\rfloor$.

А вот с минусами, да еще в дробях уже начинаются чисто особенности языков и диалектов

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

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



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

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


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

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