290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
1

Разложение в сумму кубов

06.10.2020, 14:50. Показов 6959. Ответов 42
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано натуральное число N. Необходимо представить его в виде суммы точных кубов, содержащей наименьшее число слагаемых. Программа должна вывести это число слагаемых.

Входные данные
Программа получает на вход натуральное число N, не превосходящее 10^6.

Выходные данные
Программа должна вывести единственное натуральное число.

Данный алгоритм работает только при положительных кубах, а нужно и при отрицательных.
Пример:
19 = 27 - 8

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
N = int(input())
lst1 = [1]
lst2 = []
i = 1
res = 0
while True:
    i += 1
    if i**3 <= N:
        lst1.append(i)
    else: break
while N != 0:
    for s in lst1:
        lst2.append(N / (s ** 3))
    for i in sorted(lst2):
        if i >= 1:
            k = i
            break
    res += 1
    N -= lst1[lst2.index(k)] ** 3
    lst2.clear()
print(res)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2020, 14:50
Ответы с готовыми решениями:

Разложение числа на сумму двух/трех кубов целых чисел
Всем доброго утра) Приму посильную помощь в изучении языка Питон, основанную на решении некоторых...

Найти сумму кубов
Сумма кубов По данному натуральном n вычислите сумму 1^3+2^3+3^3++n^3. Примеры входные данные 1...

Посчитать сумму кубов нечетных чисел от 1 до 100
помогите написать программу которая посчитает сумму кубов нечетных чисел от 1 до 100

Найти сумму кубов всех целых чисел от 20 до 40
Найти сумму кубов всех целых чисел от 20 до 40.

В промежутке от 15 до 115 найти сумму квадратов чисел, кратных трем, и сумму кубов чисел, кратных пяти
В промежутке от 15 до 115 найти сумму квадратов чисел, кратных трем, и сумму кубов чисел, кратных...

42
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
06.10.2020, 15:44 2
и какова сложность данного алгоритма?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36590 / 20320 / 4218
Регистрация: 12.02.2012
Сообщений: 33,621
Записей в блоге: 13
06.10.2020, 18:16 3
Цитата Сообщение от Miryz Посмотреть сообщение
Программа должна вывести единственное натуральное число.
- какое?
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 21:26  [ТС] 4
Catstail,
Цитата Сообщение от Miryz Посмотреть сообщение
Программа должна вывести это число слагаемых.
вот это. Мое решение довольно корявое, да и видимо задача не предполагает отрицательные кубы. Написал рекурсивную функцию, но она не проходит по времени.
Python
1
2
3
4
5
6
7
8
9
10
11
N = int(input())
F = []
for i in range(1, N+1):
    F[i] =  F[i-1] + 1
    k = 2
    while k**3 <= i:
        x = F[i-k**3]
        if F[i] > x:
            F[i] = x + 1
        k += 1
print(F[N])
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 21:33 5
А где рекурсивная функция? Это похоже на ДП.

Добавлено через 1 минуту
у меня на таком числе:
int('1234567890'*1000)
работает на моем компе за:
0:01:38.442992 времени
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 21:35  [ТС] 6
Цитата Сообщение от eaa Посмотреть сообщение
0:01:38.442992 времени
что именно?
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 21:37 7
мое решение, с рекурсией.
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 21:37  [ТС] 8
eaa, можно взглянуть?
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 21:39 9
Цитата Сообщение от Miryz Посмотреть сообщение
Написал рекурсивную функцию
давайте сначала взглянем на Вашу рекурсивную функцию.
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 21:41  [ТС] 10
eaa, не могу составить ядро функции...
Именно алгоритм
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 21:49 11
А тут отрицательные нужны, я думал положительные только.
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 21:52  [ТС] 12
eaa,
Цитата Сообщение от Miryz Посмотреть сообщение
да и видимо задача не предполагает отрицательные кубы
не уверен
0
Заяц, просто Заяц.
665 / 279 / 156
Регистрация: 12.11.2017
Сообщений: 878
09.10.2020, 21:59 13
Ну если для маленьких чисел (примерно до 10^9), то можно взять код с темы Разложение числа на сумму двух/трех кубов целых чисел и добавить туда отрицательные числа. Вроде работает.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n = int(input('Введите число: '))
a = []
b = []
for i in range(-1000,1000):
    x,y,z,k = i%10, (i%100)//10, i//100, i//10
    if i > 99:
        if (x**3 + y**3 + z**3 == n) and not x in a and not y in a and not z in a:
            print('{}³+{}³+{}³={}'.format(x,y,z,n))
            a.append(x)
            a.append(y)
            a.append(z)
    else:
        if (x**3 + k**3 == n) and not x in b and not k in b:
            print('{}³+{}³={}'.format(x,k,n))
            b.append(x)
            b.append(k)
А нет, надо доработать немного. Ибо это программа будет искать только до суммы трех кубов, но это уже не сложно, наверное.
0
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
09.10.2020, 22:03 14
Fury67, например 4, 5, 6 ?..
0
Заяц, просто Заяц.
665 / 279 / 156
Регистрация: 12.11.2017
Сообщений: 878
09.10.2020, 22:04 15
Gdez, не понял, можно подробнее?
0
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
09.10.2020, 22:04  [ТС] 16
Fury67, не подходит
0
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
09.10.2020, 22:04 17
В теории для положительных до 9 слагаемых
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 22:05 18
Minimum number of cubes whose sum equals to given number N
на geeks, для твоих ограничений должно хватить.
0
Эксперт Python
8199 / 4323 / 1833
Регистрация: 27.03.2020
Сообщений: 7,148
09.10.2020, 22:05 19
Fury67, не раскладывается числа 4... по коду
0
Status 418
Эксперт Python
4577 / 2344 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
09.10.2020, 22:06 20
Цитата Сообщение от Gdez Посмотреть сообщение
В теории для положительных до 9 слагаемых
это где?
0
09.10.2020, 22:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2020, 22:06
Помогаю со студенческими работами здесь

Вычислить сумму S квадратов четных и кубов нечетных чисел от 1 до n
вычислить сумму S квадратов четных и кубов нечетных чисел от 1 до n

Разложение в сумму кубов
Доброго времени суток! Есть такая задача. Дано натуральное число N. Необходимо представить его в...

Разложение числа на сумму трех кубов
Помогите пожалуйста с задачкой, заранее спасибо. Представить число в виде суммы кубов 3х чисел

Разложение числа на сумму минимального количества точных кубов
Задачка из раздела С++, помещу сюда, т.к. кажется интересной. Текст условия скопипастил: Дано...

Разложение натурального числа в сумму не более чем 7 кубов
В задаче требуется с помощью рекурсивной функции вывести любое разложение натурального числа n в...

Дано натуральное число, кратное 3. Получите сумму кубов этого числа, затем сумму кубов получившегося числа и т
Дано натуральное число, кратное 3. Получите сумму кубов этого числа, затем сумму кубов...


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

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

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