2016-10-19 11 views
0

«unsigned long int» продолжает становиться 0. Он должен быть действительно большим целым, чтобы я мог работать умножением и по модулю. Пример: 1234^123% 1234Как выделить целое число сотен цифр в C++?

+3

Вам нужно большое целое библиотеку, как сказал Jonny Хенли. Тем не менее, 1234^123% 1234 acutally равно 0. – chrizke

+0

^- операция xor в C++, а не возведение в степень, – doug

+0

И наблюдаемый приоритет: '1234^123% 1234' означает это' 1234^(123% 1234) ' – doug

ответ

-2

Две дороги вы получили
1. Реализовать то, что вам нужно, научиться делать большие расчеты с использованием целочисленных массивов с математическими трюками для скорости или
2. Используйте библиотеку

Я бы предложил пойти со вторым вариантом, если вы не привязаны к использованию внешней библиотеки. Одна из таких библиотек BigNum: ttmath

OR Если у вас есть возможность переключиться на java, то в java встроены функции BigInteger, BigDecimal и другие функциональные возможности. Посмотрите на BigInteger javadoc

+0

Этот ответ можно улучшить с помощью некоторых примеров. – mjs

0

Если вы используете GCC, вы можете попробовать __uint128_t или, возможно, использовать двойной вместо если вам не нужно делать битовые операции