ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
5 июля
152477 Топик полностью
ReAl (01.04.2009 14:08, просмотров: 176) ответил Сергей Борщ на Я же сказал, что диапазон входных значенией - 0...N-1. На этих значениях преобразование однозначно. И как вы в формуле x=floor(sqrt(2*y)) учли mod N?
Просто квадратное уравнение направильно составлено. Надо так: (x*(x+1)/2) mod N = y x*(x+1)/2 = y + k*N k=[0,infinity) отрицательные решения точно не интересуют, они не входят в [0, N-1] x = (-1 + sqrt( 1 + 8*(y + k*N) ) ) / 2 дальше нужно искать минимальное k, для которого подкоренное выражение есть квадратом целого числа, никаких полов с потолками тут быть не должно. На мой взгялд, поиск такого k совершенно неинтересная затея. Если точнее, то подкоренное должно быть квадратом нечётного числа, чтобы потом целое х получить. Т.е. подкоренное должно иметь вид (2*m+1)2, а это тождество, m==x. Что-то ничего умного в голову не лезет. Тут палдиндромчик подкинули Ум за рамки тупо плыл по пути к маразму и как не крути ...