Вам нужно использовать большую целочисленную библиотеку, которая работает с массивами произвольного размера. GMP популярен: http://gmplib.org/.
Если вы готовы пожертвовать точностью, вы можете использовать double
, который может представлять значения примерно до 1,8 * 10 ^ 308, просто используя pow()
(2 ^ 999 = ~ 5,4 * 10 ^ 300).