Решить пример 38^29 mod 91 на C#

133
21 декабря 2021, 13:50

Пробовал сам сделать, но C# не может, такие большие числа обрабатывать правильно. На Python все ок работает. Вот такое свойство (Math.Pow(d, e) % n) 38^29 mod 91 = 12, а C# выдает 81

Answer 1

Ну, я в C# слаб, но, думаю, код на C/C++ вы переведете? :)

int s = 1, n = 38;
for(int i = 0; i < 29; ++i)
    s = (s*n)%91;

Можно воспользоваться более быстрым возведением в степень, типа

int s = 1, n = 38, m = 29, k = 91;
while(m)
{
    if (m&1) s = (s*n)%k;
    m >>= 1;
    n = (n*n)%k;
}

но смысл, я думаю, понятен? Применять модульную арифметику по ходу дела, а не только в конце.

Answer 2

Попробуй использовать long ??

диапазон От –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 64-разрядное число...

long long2 = 4294967296L; - L обязательно.

int x = (int)L; - неявное преобразование int в лонг!

у меня так работает.

READ ALSO
Можно ли применить к include() фильтры take() и skip()

Можно ли применить к include() фильтры take() и skip()

В принципе в названии вопрос ясен, есть список, у элемента списка есть еще список, из бд мне нужно получить ограниченное количество элементов...

87
Как ускорить парсинг JSON файла?

Как ускорить парсинг JSON файла?

Пишу парсер для steam инвентаря

184
Как правильно подключить скрипты к WordPress?

Как правильно подключить скрипты к WordPress?

У меня есть скрипты, которые я подключаю в файле functionsphp

151
настроить Apache для yii2 starter kit

настроить Apache для yii2 starter kit

использую OpenServer на windows, установил yii2-starter-kit, но не могу настроить Apache в htaccess

199