Алгоритм для проблемы ProjectEuler 99

Используйте приведенное ниже условие, которое проверяет наличие нецифровых символов и длину усеченного значения Installation:

CASE 
  WHEN
    (NOT TRIM(Installation) GLOB '*[^0-9]*') AND (LENGTH(TRIM(Installation)) > 0)
  THEN CAST(TRIM(Installation) AS BIGINT)
END

Обратите внимание, что тип данных BIGINT в SQLite на самом деле INTEGER (целое число от 1 до 8 байт).

6
задан iCodez 22 January 2015 в 16:12
поделиться

4 ответа

Не полное решение, но некоторые идеи. Можно использовать следующую формулу:

журнал (топор) = x*loga

log10 может легко быть оценен как количество цифр. log2 может легко быть оценен путем подсчета сдвигов вправо.

На основе вышеупомянутого Вы могли значительно сузить список. Для остающихся чисел необходимо было бы сделать полные вычисления. Математические функции позволяются в Euler проекта? Если да, было бы лучше использовать логарифмы.

16
ответ дан 8 December 2019 в 04:32
поделиться

Один возможный подход должен был бы использовать идентификационные данные логарифма (то есть, ab идентичен eb * ln a). На самом деле, ab идентичен baseb * logbase для всех оснований кроме 0 и 1.

2
ответ дан 8 December 2019 в 04:32
поделиться

Так как логарифм является монотонной функцией вместо топора, который Вы могли сравнить, x * регистрируются для нахождения максимума. Вы, возможно, должны были бы принять числовую точность во внимание, все же.

5
ответ дан 8 December 2019 в 04:32
поделиться

При сравнении экспоненты * журнал (основа) вместо base^exponent для каждой строки в файле работает на эту проблему, не принимая точность во внимание. Это - конечно, лучшее решение с математической точки зрения, но я просто хотел указать, что это не действительно необходимо.

Другое возможное решение состоит в том, чтобы разделиться, каждое число в файле некоторой константой (скажите 100,000) прежде, чем выполнить возведение в степень на теперь меньших числах. Так как Вы сравниваете все значения друг другу, масштабирование их всех вниз постоянным множителем не влияет на конечный результат.

2
ответ дан 8 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: