Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Zodt
156 / 79 / 69
Регистрация: 10.05.2014
Сообщений: 420
1

Build a pile of Cubes

26.06.2016, 07:31. Просмотров 1003. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток, я тут столкнулся с одной проблемкой, нашел задачу( содержание ниже) на сайте codewars, вроде решил, все хорошо, но во время финальной сдачи задачи возникают ошибки, сейчас чаще всего выпадает ошибка "450010 should equal -1", хотя вроде бы, повторюсь, сделал верно. В общем, если кто увидит, где я совершил ошибку, дайте знать, а то я уже с 2-х часов сижу-туплю

Вот сама задача:

Your task is to construct a building which will be a pile of n cubes. The cube at the bottom will have a volume of n^3, the cube above will have volume of (n-1)^3 and so on until the top which will have a volume of 1^3.

You are given the total volume m of the building. Being given m can you find the number n of cubes you will have to build?

The parameter of the function findNb (find_nb, find-nb) will be an integer m and you have to return the integer n such as n^3 + (n-1)^3 + ... + 1^3 = m if such a n exists or -1 if there is no such n.

Examples:
findNb(1071225) --> 45
findNb(91716553919377) --> -1


Python
1
2
3
4
5
from math import sqrt
def find_nb(m):
    t = (-1 + sqrt(1 + 8 * sqrt(int(m)))) / 2
    if t - int(t): return -1
    else: return int(t)
Небольшие пояснения:

По поводу вывода, на сколько я понял, сайт считает выводом возвращаемые значения(return).
Док-во тождественности формул можно доказать по индукции или другими, более громоздкими, способами.
1^3 + 2^3 + 3^3 + ... + (n-1)^3 + n^3 = (1/4)*(n^2)*(n+1)^2,
(1/4)*(n^2)*(n+1)^2 = m,
n^2*(n+1)^2 = 4m,
(n*(n+1))^2 = 4m,
n*(n+1) = 2*sqrt(m),
n^2 + n - 2*sqrt(m) = 0,
D = 1 + 4*2*sqrt(m),
n1 = (-1+ sqrt(1+8*sqrt(m)) )/2;
n2 = (-1 - sqrt(1+8*sqrt(m)) )/2 <0 и поэтому не годится.
n = (-1+sqrt(1+8*sqrt(m)))/2.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 07:31
Ответы с готовыми решениями:

Win 8.1 build 9600 распознаётся как Windows 8 build 9200
Проблема с версией. Win 8.1 build 9600 распознаётся как Windows 8 build 9200 . ...

Почему в Eclipse неактивно действие Build Project и Build All?
Доброго времени суток) У меня вопрос такой: почему в Eclipse неактивно...

Объясните пожалуйста, как работает алгоритм Marching cubes?
Читал в википедии, но вообще туманные представления о нем. Помогите пожалуйста...

Хорошая звуковая карта для работы с программами типа Cubes
Парни, подскажите хорошую видео карту для ПС, что работала ном с прогами Cubes...

Build failed
Помогите, пожалуйста!:cry: У меня Microsoft VS 2008, не помню, где скачивал,...

8
oldnewyear
415 / 413 / 157
Регистрация: 21.05.2016
Сообщений: 1,325
26.06.2016, 09:41 2
Если проверочный скрипт импортирует только функцию, то sqrt может не работать
0
Zodt
156 / 79 / 69
Регистрация: 10.05.2014
Сообщений: 420
26.06.2016, 11:40  [ТС] 3
oldnewyear, да вот дело не в этом точно, ибо 27 примеров скрипт делает верно, а один не хочет=(
0
Миниатюры
Build a pile of Cubes  
oldnewyear
415 / 413 / 157
Регистрация: 21.05.2016
Сообщений: 1,325
26.06.2016, 12:35 4
А если так :
Python
1
2
3
4
5
6
7
  
from math import sqrt
def find_nb(m):
    t = -1 + sqrt(1 + 8 * sqrt(m))
    if not t % 2:
         return t // 2
    return -1
0
Zodt
156 / 79 / 69
Регистрация: 10.05.2014
Сообщений: 420
26.06.2016, 15:36  [ТС] 5
oldnewyear, неа, проблема осталась та же, только теперь "450010.0 should equal -1"
0
Whost
29 / 29 / 23
Регистрация: 13.02.2016
Сообщений: 131
26.06.2016, 17:18 6
Лучший ответ Сообщение было отмечено Zodt как решение

Решение

Zodt, проверь будет ли работать тупо в лоб

Python
1
2
3
4
5
6
7
8
9
def find_nb(M):
    m = 0
    i = 0
    while m < M:
        m += i ** 3
        if m == M:
            return i
        i += 1
    return -1
1
izuchaju_python
19 / 20 / 6
Регистрация: 30.06.2015
Сообщений: 431
26.06.2016, 19:41 7
Zodt, посмотрите здесь
0
Zodt
156 / 79 / 69
Регистрация: 10.05.2014
Сообщений: 420
26.06.2016, 20:46  [ТС] 8
Whost, спасибо, правда, я все таки не могу понять, в чем же я ошибся при написании своего кода?
0
Whost
29 / 29 / 23
Регистрация: 13.02.2016
Сообщений: 131
26.06.2016, 23:53 9
Цитата Сообщение от Zodt Посмотреть сообщение
правда, я все таки не могу понять, в чем же я ошибся
Честно говоря я сам не понимаю, прогнал обе функции на миллионе тестов и результаты совпадают полностью

Добавлено через 13 минут
Наткнулся на обсуждение этой проблемы. В общем насколько я понял проблема на стороне скрипта который это все проверяет.
0
26.06.2016, 23:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 23:53

build проэкта
Есть моменты которые не могу точно понять : 1) у меня программа в которой 9...

Ant Build
Подскажите пожалуйста. При компиляции антом жалуется на строчки подобные этой ...

static build
здраствуйте! сделал статическую сборку как по инструкции, при компиляции в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru