Torento20345, Производная функции f(x) - пересекает 0 только в одной точке. До этого она отрицательная, а потом положительная. Значит f(x) - имеет один минимум. Если мы ограничены условием, что x - целое, то минимум - одна из ближайших к оптимальному x значений.
Или 22, или 23 в вашем примере. Нужно подсчитать сколько ходов там будет в итоге и выбрать минимум из двух вариантов.
При x=22, n = 500 будет. floor(n/x) + x = floor(500/22) + 22 = 22 + 22 = 44
При x=23, n = 500 будет. floor(n/x) + x = floor(500/23) + 23 = 21 + 23 = 44
Тут без разницы, сколько брать 22 или 23. Всегда ли это так - мне лень думать. Преберите 2 варинта в вашей программе и найдите лучший.
WebDev, даже код на php иногда можно ускорить в сотни раз, если использовать правильный алгоритм и структуры данных. Это с запасом покроет медленность этого решения на пхп против быстроты тупого решения на встроенных функциях.
Да, такой же код на си будет в несколько раз быстрее, но если у вас нет возможности переписать все или только сложную часть на си, то придется довольствоваться этим.
mIka01, Напишите все-таки, что за триангуляцию вам надо. Пока под условие подходит вернуть пустой массив, или {{1,2,3},{4,5,6},...}. Тоже триангуляции.
Вам точно триангуляция Делоне нужна или вам просто разбить на тругольники без пересечений, чтобы все точки были состояли в треугольниках?
jcmvbkbc, Просто повторение фраз из стандарта, без какой-либо попытки их осмыслить, обычно плохо кончаются (второй пример там).
Стандарт лишь говорит, что нет никакого UB, и вычисления производятся по модулю 2^n. В русском языке термина для "underflow" особо нет, поэтому я использовал слово "переполнение".
Если проблема "чтобы не было отрицательных значений" - то предлагать unsigned - это весьма необдуманное решение.
jcmvbkbc, Проблема ТС в том, что x%m при отрицательном m выдаст неверное, отрицательное число. Да, с тем же остатком, но в вычислениях нужно число от 0 до m-1. Правильное решение этой проблемы - прибавить m, если число отрицательно, или всегда прибавлять m и брать по модулю опять. ТС же, наобум вставил модуль. Если же тупо заменить все переменные на unsigned int, то там будет переполнение и, фактически, прибавление 2^32 к ответу. Что тоже испортит ответ, если только m - не степень двойки.
fronttrty, Давайте сначала. Запишите формулу хеша на отрезке l..r. Запишите формулу для каждого prefhash и powp. Запишите как ваш getshash считает, приравняйте, посмотрите, то ли у вас получилось.
Mark, Можно эту же логику сделать на сервере. Или для каждого клиента считайте, сколько раз он уже посылал запрос и был послан, или считайте, сколько было отказов всем клиентам в какое-то окно времени.
При посыле клиента подождать реализуйте экспоненциальный откат - генерите случайное число ожидания в промежутке, зависящим от счетчика отказов (для данного клиента или в целом по серверу).
Mark, Сервер, если не может обработать запрос сразу отвечает клиенту "я занят". Клиент, если получает от сервера это, или таймаут или ошибку запроса - откатывается.