Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/37: Рейтинг темы: голосов - 37, средняя оценка - 4.51
1 / 1 / 0
Регистрация: 18.11.2018
Сообщений: 5
1

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

18.11.2018, 17:08. Показов 6776. Ответов 9
Метки нет (Все метки)

Помогите решить задачу:

Найдите период разложения в бесконечную периодическую десятичную дробь числа, обратного к данному натуральному. Период должен начинаться с той цифры, которая является первой повторяющейся при выписывании бесконечной десятичной дроби. Например, у 1/11=0.09090909… считаем период 09, а не 90. У конечной десятичной дроби период — одна цифра 0.
На вход подается 1 число - знаменатель дроби
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2018, 17:08
Ответы с готовыми решениями:

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

Вывести на консоль бесконечную периодическую дробь с указанием периода
Дана дробь. Например a - числитель, b - знаменатель. Как можно реализовать метод, возвращающий...

По данному натуральному числу N найдите сумму чисел
По данному натуральному числу N найдите сумму чисел 1+1/1!+1/2!+1/3!+...+1/N!. Количество действий...

По данному натуральному числу N найдите сумму чисел 1+1/1!+1/2!+1/3!+...+1/N!
Уважаемые программисты, помогите пожалуйста решить ряд задач: 1) По данному натуральному числу N...

9
2 / 2 / 0
Регистрация: 28.09.2020
Сообщений: 14
14.11.2020, 18:13 2
Здравствуйте, та же проблема. Поступил в Яндекс лицей и не могу решить эту задачу. Не проходит тест, в котором длина периода должна быть равна 256 символам. Не понимаю, как вообще можно обработать настолько длинную строку. Но моя программа работает для менее длинных периодов (первые девять тестов проходят успешно).
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
correct = 0
string_ = str(1 / int(input()))[2:-1]
string = list()
string.extend(string_)
while len(string):
    for length in range(1, int(len(string) / 2) + 1):
        line = string[:length]
        correct = 0
        i = 0
        while length + i < len(string):
            if line != string[i:length + i]:
                correct = 0
                break
            else:
                correct += 1
            i += length
        if correct >= 2:
            break
    if correct >= 2:
        break
    string = string[1:]
if correct >= 2:
    for val in line:
        print(val, end='')
else:
    print(0)
0
5490 / 2865 / 1351
Регистрация: 27.03.2020
Сообщений: 5,273
14.11.2020, 19:09 3
ARTEMIY0, примеры тестов есть ?

Добавлено через 43 минуты
егор11,
Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
dec = 10
while not n % 2 :
    n //= 2
while not n % 5 :
    n //= 5
k = (0 if n == 1 else 1)
while dec % n != 1 and k :
        k += 1
        dec *= 10
print(k)
0
2 / 2 / 0
Регистрация: 28.09.2020
Сообщений: 14
16.11.2020, 09:19 4
Вот скрин последнего теста, который моя программа не прошла. Как видите, период здесь просто огромен.
Миниатюры
Найдите период разложения в бесконечную периодическую десятичную дробь числа, обратного к данному натуральному  
0
2 / 2 / 0
Регистрация: 28.09.2020
Сообщений: 14
16.11.2020, 09:24 5
А можете пояснить, что делает ваш код?
0
5490 / 2865 / 1351
Регистрация: 27.03.2020
Сообщений: 5,273
16.11.2020, 09:57 6
ARTEMIY0, вам нужен период(!) или значение(!) периода?
Мой код определяет количество(!) цифр в периоде

Добавлено через 5 минут
ARTEMIY0, алгоритм тогда такой:
- определение размера периода -> N
- создание списка цифр после "запятой" размером до N
- начиная с N + 1 (учитывая индексацию с 0, то с N), проверяем mylist[i - N] == mylist[i] со счетчиком
- если если счетчик дошел до N при выполнении условия, то фиксируем N цифр.
По идее можно сразу создать список из цифр "после запятой" длиной 3*N. И искать две одинаковых подпоследовательности размером N

Добавлено через 25 минут
ARTEMIY0, попробуй
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = int(input())
dec = 10
while not n % 2 :
    n //= 2
while not n % 5 :
    n //= 5
if n != 1 :
    res = '0' * (len(str(n)) - 1)
    while dec % n != 1 :
        dec *= 10
    res += str(dec//n)
else :
    res = 0
print(res)
0
Status 418
Эксперт Python
2178 / 1270 / 394
Регистрация: 26.11.2017
Сообщений: 3,545
Записей в блоге: 1
16.11.2020, 09:58 7
Цитата Сообщение от Gdez Посмотреть сообщение
Мой код определяет количество(!) цифр в периоде
ввел: 9876541
не дождался ответа
0
5490 / 2865 / 1351
Регистрация: 27.03.2020
Сообщений: 5,273
16.11.2020, 10:10 8
eaa, и не должно для такого числа

Добавлено через 3 минуты
Потому что это число скорее всего простое и для него нужен тот же порядок степени 10
Вот число
22309287
Больше. Но оно составное
0
Status 418
Эксперт Python
2178 / 1270 / 394
Регистрация: 26.11.2017
Сообщений: 3,545
Записей в блоге: 1
16.11.2020, 10:15 9
для 9876541
всего то 185136 цифр в периоде.
200 тыщ операций это ерунда.
0
5490 / 2865 / 1351
Регистрация: 27.03.2020
Сообщений: 5,273
16.11.2020, 10:24 10
eaa, eaa, получается, что не ерунда, если в коде операций то умножение на 10, остаток от деления и сравнение
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2020, 10:24

По данному натуральному числу N найдите сумму чисел
По данному натуральному числу N найдите сумму чисел 1+1/1!+1/2!+1/3!+...+1/N!. Количество действий...

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

Найдите вероятность того, что выражение обращается в конечную десятичную дробь
В качестве знаменателя обыкновенно дроби 1/a наудачу выбирается натуральное число от 30 до 39...

Вывести все трехзначные числа, сумма цифр которого равна данному натуральному числу
Составить программу вывода всех трехзначных чисел, сумма цифр которого равна данному натуральному...

Нахождение числа, обратного данному изменяющегося с известным шагом
Программа 24.cpp предназначена для нахождения числа обратного данному изменяющегося с известным...

Превратить рациональную дробь в десятичную. Возможен период. "1/3" должна превратиться в "0.(3)"
Превратить рациональную дробь в десятичную. Возможен период. &quot;1/3&quot; должна превратиться в &quot;0.(3)&quot;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru