Работать с такими огромными числами нет смысла.
Проще обрабатывать только последние символы, т.е. для 100^100, например:
- 100*100 = 10000
- переводим 10000 в строку
- если длина '10000' > 10, то берем только последние 10 символов
- переводим эти символы снова в число
- запускаем цикл от 1 до 98 (100 - 2) и перемножаем это число на 100 (98 раз), каждый раз беря только последние 10 символов