Execution Timed Out [закрыт]

209
14 января 2022, 04:30
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 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, findNb) 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.

Вот код:

public class ASum { 
    public static long findNb(long m) {
    int n = 2;
    int result = 0;
    while(n<m)
    {
        result = 0;
        for(int i = 1; i <= n; i++)
        {
            result += i*i*i;
        }
        if(result == m) return n;
        else n++;
     }
     return -1;
    }
}

Вот ошибка:

Execution Timed Out (12000 ms)

P.S. Спасибо за ответы. Но вопрос именно в том, почему этот код - неверный, а не какой код лучше. Пожалуйста, кто знает, - ответьте

Answer 1

Я решу эту задачу за 0 циклов.

public static long findNb(long m) {
    long root = Convert.ToInt64(Math.Sqrt(m));
    if (root * root != m) // не является суммой кубов последовательных чисел
    { 
        return -1; 
    }
    long d = 1 + 8*root;
    long n = (-1 + Math.Sqrt(d)) / 2;
    if (Math.Pow(0.5 * n * (n+1), 2) != m)
    {
        return -1;
    }
    return n;
}

PS. На с# пишу впервые в жизни, возможно наврал с квадратным корнем и переводом double в long.

Пояснение

Сумма кубов числового ряда от 1 до n равна (0.5 * n * (n+1)) ^ 2. Поэтому в первой строчке беру целую часть квадратного корня из m и потом проверяю, равен ли квадрат этого корня числу m. Если нет, то входное число не является суммой кубов.

Дальше просто решаю квадратное уравнение, выведенное из первой формулы:

(0.5 * n * (n+1)) ^ 2 = m -> n^2 + n - 2*m = 0

PPS. Сейчас собразил, что если m будет квадрат, который не является суммой кубов (например, 49), то функция выдаст неверный результат. Так что нужно добавить еще одну проверку:

if (Math.Pow(0.5 * n * (n+1), 2) != m)
{
    return -1;
}

Но теперь надо ещё специально обрабатывать ситуацию m = 0.

Answer 2

Я знаю - отвечаю.

Ваш код неправильный, потому что Вы сравниваете "яблоки" с "апельсинами". Здесь

while(n<m)

m - общее число маленьких кубиков в здании, а n - количество кубов, представляющих собой ступени в этом "мавзолее".

long result = 0;
for (int i = 1; result < m; i++)
{
  result += i*i*i;
  if (result == m)
    return i;
}
return -1;

Без никакого двойного цикла.

function findCubes(m) { 
  var result = 0; 
  for (var i = 1; result < m; i++) { 
    result += i * i * i; 
    if (result == m) 
      return i; 
  } 
  console.log(i, result); 
  return -1; 
} 
 
console.log(findCubes(1 + 8 + 27 + 64 + 125 + 6 * 6 * 6 + 7 * 7 * 7)); 
console.log(findCubes(1000000000000));

READ ALSO
C# win forms / Audio

C# win forms / Audio

вопрос на счёт аудио файлов и их воспроизведенияСейчас делаю не большую игру в windows forms

136
Как вынести контроллеры в отдельные сборки?

Как вынести контроллеры в отдельные сборки?

Есть у меня веб-приложение, в котором соединено два очень разнородных api, скажем:

103
Ado.NET C# Как изменить запись в DataTable?

Ado.NET C# Как изменить запись в DataTable?

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

88
Ошибка: Fatal error: Uncaught Error: Call to a member function bindValue() on bool in…

Ошибка: Fatal error: Uncaught Error: Call to a member function bindValue() on bool in…

Выдаёт ошибку Fatal error: Uncaught Error: Call to a member function bindValue() on bool in… Не пойму, в чём может быть проблемаВывод var_dump($req); — bool(false)

266