|
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
|
|
Написать программу, определяющую период дроби26.06.2016, 14:34. Показов 6681. Ответов 49
Метки нет (Все метки)
Любое рациональное число представляется в виде бесконечной десятичной периодической дроби. Написать программу, определяющую период дроби n / m, где n и m – натуральные числа.
0
|
|
| 26.06.2016, 14:34 | |
|
Ответы с готовыми решениями:
49
Определить период дроби
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 16.12.2024, 15:18 | |
|
COKPOWEHEU, ты хоть считал сколько там итераций будет? Очень мало. Я бы не назвал это перебором) Там же 9 добавляется макс до длины макс long long.
18 итераций в худшем случае вроде
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|
| 16.12.2024, 15:55 | |
|
Использовать string для целочисленных вычислений само по себе непрофессионально.
Как и использование полного перебора вместо аналитического решения. У Tertiboer и то лучше.
0
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 16.12.2024, 16:00 | |
|
COKPOWEHEU, как раз строки и используются во всех серьезных библиотеках для работы с большими целыми числами (big int). Именно строки, а не даже векторы и прочее...
Но я и не заявляю, что мой алгоритм претендует стать лучшим в данной теме. Мне просто было интересно реализовать предложенную мной выше идею, что я и сделал.
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||
| 16.12.2024, 16:33 | |||
|
0
|
|||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 16.12.2024, 16:46 | |
|
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|
| 16.12.2024, 17:38 | |
|
0
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
||
| 16.12.2024, 17:43 | ||
|
0
|
||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
||
| 16.12.2024, 18:25 | ||
|
Однако "небуквальное" решение, конечно, интереснее. В частности, да - через вариант с девятками в знаменателе.
0
|
||
|
Windows must die
|
|
| 16.12.2024, 18:32 | |
|
Аналогично можно для чисел, где единицы в знаменателе, начиная с двух: количество цифр в периоде равно количеству единиц в знаменателе, а сам период равен числителю, помноженному на 9. Например, 5/11 = 0.(45), 16/111 = 0.(144), 151/1111 = 0.(1359) и т.д.
(является следствием вышеупомянутого правила о девятках; аналогично следствием будет правило с тройками в знаменателе)
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||
| 16.12.2024, 21:26 | |||
|
--- Ну ладно, попробую воспроизвести свое доказательство. Пусть мы хотим проверить рациональное число 1/b = 0,(a), где a - натуральное, повторяющаяся часть периода, b - натуральное. Период в системе счисления N равен k цифрам. Тогда 0,(a) * Nk = a,(a). То есть a до запятой и бесконечно повторяется после. a,(a) - 0,(a) = a 0,(a) * Nk - 0,(a) = a 0,(a) * (Nk - 1) = a 1/b * (Nk - 1) = a Nk - 1 = a*b Nk - число в данной системе счисления, состоящее из единицы и k нулей. Соответственно, Nk - 1 - число, состоящее из k "девяток". Если я нигде не ошибся, это доказывает, что любое число 1/b будет делителем числа, состоящего из одних "девяток", причем второй делитель будет периодом, а количество девяток - длиной периода. Полагаю, расширить доказательство до произвольного d/b = x,y(a) будет несложно. Ну там сводим дробь к взаимно простым числам, выносим множитель за скобки, выносим непериодическую часть и т.д. Что приятно, доказательство работает для любой системы счисления, не только 10. Ну, по крайней мере, должно работать... А вот как от него перейти к аналитическому решению, я не знаю.
0
|
|||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
||
| 17.12.2024, 00:12 | ||
|
Но здесь есть одно НО. Данный алгоритм работает только, когда повторяющая часть начинается непосредственно после десятичного разделителя. Но вот допустим случай с дробью 7/12. Предложенный мной алгоритм ничего не найдет, ибо тут 0.58(3) - т.е. повторяющаяся часть начинается не сразу после десятичного разделителя. Хотя, я вот смотрю, код Catstail тоже неверно выводит для такой дроби, пишет 58, что неверно. Или вот еще одна дробь 1/24 = 0.041(6). У Catstail выводит 41, что чушь. Мой код тоже не работает. Как и сказал, наши алгоритмы не работают для таких дробей. Так что, мой код никак не претендует стать ответом в данной теме. Тем более, я только что увидел, что написал на С++, а то я бы написал на С. Вот у меня на телефоне есть калькуляторы, которые умеют подчеркивать период. Т.е. вместо повторяющихся цифр, они выводят только период. Но мне кажется, что эти калькуляторы не используют никаких аналитических алгоритмов по выявлению периода. Тут тупо срабатывает механизм поиска повторяющегося куска.
1
|
||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
||
| 17.12.2024, 02:03 | ||
|
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 17.12.2024, 09:15 | |
|
Catstail, я и не переживаю, пусть ТС переживает. У меня других проблем в жизни хватает, не до дробей мне
1
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
||
| 17.12.2024, 12:00 | ||
|
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 17.12.2024, 12:11 | |
|
COKPOWEHEU, не ну я проверял не на двух числах. Но я понял вас с первого раза. Это как бинарная гипотеза Гольдбаха. Все понимают, что работает, а работоспособность была проверена аж до 4×10^18, тем не менее, пока не доказано, 100% уверенности нет.
Но сейчас я занят, чтобы заниматься доказательством или его поиском в инете.
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
||
| 17.12.2024, 13:44 | ||
|
0
|
||
|
Супер-модератор
|
||||||
| 17.12.2024, 17:55 | ||||||
|
Выполняю обещание:
0.041(6) 0.58(3) 0.02 0.(3)
1
|
||||||
|
2469 / 1615 / 741
Регистрация: 17.03.2022
Сообщений: 5,269
|
|
| 17.12.2024, 18:26 | |
|
Вообще говоря, есть стандартный алгоритм для определения периода дроби a/b (при a<b). Выглядит он примерно так:
1) Делим a на b с остатком и фиксируем остаток; 2) Делим 10*a на b и фиксируем остаток; ... n) Делим 10^n*a на b и фиксируем остаток; ... Разность номеров первых двух одинаковых остатков - период дроби. Номер k, на котором повторившийся остаток встретился в первый раз - номер цифры после запятой, с которой дробь стала периодической. Ну и все, собственно. Реализация на C, наверное, всем присутствующим очевидна.
2
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
||||||||
| 17.12.2024, 21:34 | ||||||||
1
|
||||||||
| 17.12.2024, 21:34 | |
|
Составьте программу, определяющую период десятичной дроби Составить программу, которая для натуральных чисел m и n вычисляет период десятичной дроби m/n
Период у дроби Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|