Столкнулся недавно с такой вот проблемой:
int r, n, R; unsigned long long H; ... r = min(R, int((H * H + H * r) % n));
Неправильный ответ
int r, n, R; unsigned long long H; ... int tmp = (H * H + H * r) % n; r = min(R, tmp);
Полное решение
чем отличаются эти два куска кода?
Мне кажется в функции min, max надо использовать однотипные переменные.
да, иначе и не получится. но я ведь привожу к одному типу.
int a; unsigned long long b; min(a, int(b));
ввобще еть предположение, unsigned в signed как-то криво преобразуется
То ли лыжи плохие, то ли ты ебанутый
Эти два куска кода ничем не отличается. Проблема кроется в следующей строке.
R = max(R, (int) ((H * H + H * r) % n));
Ты используешь переменнуюr
, которую только что поменял.Пожалуйста, прикладывай ссылки на полные исходники.