2014 dxdy logo

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

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


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


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Разложение дроби. Факториальная система
Сообщение31.07.2015, 21:42 


18/04/15
29
Любую правильную дробь $\frac{p}{q}$, где $0<p<q$ можно представить в виде:
$$\frac{p}{q}=\frac{a_2}{2!}+\frac{a_3}{3!}+\dots+\frac{a_n}{n!}$$
где $0\le a_i<i, 2\le i\le n$ и $n$ - некоторое натуральное число. Помогите придумать алгоритм, который по заданным $p,q$ находил бы искомое разложение. Такое разложение существует всегда, возможно и не одно. Я вообще не понимаю как искать $n$ и коэффициенты $a_i$ кроме как простого перебора. Если писать прогу, то при ограничениях $0<q<p\le 1000$ простой перебор уже не покатит. Что делать?

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 21:56 
Заслуженный участник
Аватара пользователя


18/05/06
13437
с Территории
Тут надо начинать с простых аналогий. Говорят, любое натуральное число $p$ можно представить в виде $p=a_0\cdot10^0+a_1\cdot10^1+\dots+a_n\cdot10^n$, где $0\le a_i<10,\;0\le i\le n$ и $n$ - некоторое натуральное число. Только как же их найти? Перебор определённо не покатит.

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 22:24 


18/04/15
29
И разве это особо помогает? Вы хотите последовательно определять коэффициенты $a_i$, как для десятичной записи числа (если там коэффициенты не были бы такими очевидными). А если взять число $\frac{1}{607}$, где 607 - простое число, тогда n должно быть $n\ge 607$, и тут начинаются очень страшные вычисления!

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 22:50 
Заслуженный участник
Аватара пользователя


18/05/06
13437
с Территории
Ну это хорошо, но делать-то что?

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:00 
Заслуженный участник


09/05/13
8904
Darts501
Говорят также, что любое натуральное число можно представить в виде $p=a_0\cdot3^0+a_1\cdot3^1+\dots+a_n\cdot3^n$, где $0\le a_i<3,\;0\le i\le n$ и $n$ - некоторое натуральное число. Только как же их найти? ))

Делать-то что?

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:02 


18/04/15
29
Не увидел последнего сообщения! Пока не знаю. К этой задаче можно написать прогу с ограничениями $0<p<q\le 1000$. А значит эти коэффициенты как то легче должны определяться, без диких вычислений.

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:05 
Заслуженный участник


09/05/13
8904
Ну ведь правда, да? и в двоичном виде можно любое записать, и в троичном, и в восьмеричном... да? а как?

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:11 


18/04/15
29
Простите за тупость)) Я понял как делать. Рассмотрим как находить десятичное разложения для $\frac{1}{8}$. Получаем: $\frac{1}{8}-\frac{1}{10}=\frac{1}{40}$, $\frac{1}{40}-\frac{2}{100}=\frac{1}{200}$,$\frac{1}{200}-\frac{5}{1000}=0$ и нашли соответствующие коэффициенты. Также и в поставленной задаче, только вместо степени $10^n$ беруться $n!$. Вообще то это я понял сразу, после первого ответа (смотрите выше, про последовательное нахождение коэффициентов). Но я подумал, что если взять q очень большим простым числом (конечно не превышающем 1000) , например $q=607$, тогда в разложении дроби коэффициент $a_{607}$ перед $\frac{1}{607!}$ должен быть ненулевым, и тогда эти факториалы надо вычислять и что факториалы от чисел 4-го десятка уже не влазят даже в long long int, значит как надо подругому делать. Но это не так. На самом деле конкретные значения факториалов надо знать для $n\le 8$, то есть для первого n, такого что $n!\ge 1000$, для остальных вычислений не требуется знать точное значение $n!$ при больших n.

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:26 
Заслуженный участник
Аватара пользователя


15/10/08
11579
Darts501 в сообщении #1041849 писал(а):
что делать!

Делить и вычитать в основном.

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение31.07.2015, 23:41 
Заслуженный участник
Аватара пользователя


18/05/06
13437
с Территории
Говорят, есть такая факториальная система счисления. Ну да это неважно. Короче, можно просто идти жадным алгоритмом с самого верха и отжирать самое большое, что влезает.
Существенная подсказка:
Darts501 в сообщении #1041825 писал(а):
Такое разложение существует всегда, возможно и не одно.
Когда, например, оно будет не одно?

-- менее минуты назад --

"С самого верха" можно понимать неоднозначно. Я имел в виду - начиная с малых знаменателей (и, значит, больших дробей).

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение01.08.2015, 01:32 
Заслуженный участник


09/05/13
8904
Где-то делить и вычитать, да. А где-то наоборот, умножать и вычитать.
Darts501 в сообщении #1041849 писал(а):
Лучше подсказал что делать!

Тут уже целая страница подсказок. Тоже ж понять надо, что не с потолка вопросы задают, а зачем-то.

Кстати, полезнее было бы научиться записывать правильные дроби, например, в том же десятичном виде.

Это у нас $\frac pq = a_1\cdot 10^{-1}+a_2\cdot 10^{-2}+\ldots$. Если разик так записать даже хотя бы $\frac{17}{125}$ вручную, чтобы был именно алгоритм, годящийся для любых оснований системы счисления, то после этого факториальная просто на ура пойдет.

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение01.08.2015, 11:33 
Аватара пользователя


11/08/11
1135
Darts501
Вам на самом деле дали достаточно подсказок. Ну хорошо. Возьмем для начала задачу попроще: есть у нас дробь $\frac{1}{8}$, и нам понадобилось записать ее в виде десятичной дроби. Как вы будете это делать? Распишите подробно алгоритм. Потом обратите внимание на то, что этот алгоритм имеет прямое отношение к вашей задаче.

Просто распишите, как одну восьмую представить десятичной дробью. Прямо здесь, прямо сейчас.

 Профиль  
                  
 
 Posted automatically
Сообщение01.08.2015, 13:15 


20/03/14
12041
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- отсутствуют самостоятельные попытки решения задачи.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение01.08.2015, 16:28 


20/03/14
12041
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

 Профиль  
                  
 
 Re: Разложение дроби. Факториальная система
Сообщение01.08.2015, 17:03 
Заслуженный участник


09/05/13
8904
Darts501 в сообщении #1041849 писал(а):
Рассмотрим как находить десятичное разложения для $\frac{1}{8}$. Получаем: $\frac{1}{8}-\frac{1}{10}=\frac{1}{40}$, $\frac{1}{40}-\frac{2}{100}=\frac{1}{200}$,$\frac{1}{200}-\frac{5}{1000}=0$ и нашли соответствующие коэффициенты. Также и в поставленной задаче, только вместо степени $10^n$ беруться $n!$.

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

А можно проще. Я не буду заморачиваться обозначениями, примерно, думаю, суть будет ясна. Для десятичного разложения. Факториальное делается так же.
$\frac 18 = a_1\cdot 10^{-1}+a_2\cdot 10^{-2}+a_3\cdot 10^{-3}+a_4\cdot 10^{-4}+\ldots$.
Все коэффициенты от 0 до 9.
Умножаем на 10. Получаем
$\frac {10}8 = 1+\frac{2}{8}=a_1+a_2\cdot 10^{-1}+\ldots$. Отсюда $a_1=1$.
Вычитаем.
$\frac 28=a_2\cdot 10^{-1}+a_3\cdot 10^{-2}+\ldots$. Умножаем на 10. $\frac{20}8=2+\frac{4}{8}=a_2+a_3\cdot 10^{-1}+\ldots$. Отсюда $a_2=2$. И так далее, до зануления разности.

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

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

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



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

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


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

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