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

147
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()

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

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

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

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

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

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

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

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

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

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

212