Тут есть одна проблема, насколько я помню код на питоне использует целочисленные значения неограниченных размеров, в то время как на С++ требуется явно указать размер переменной. Возможно для реализации кода выше, в частности возведения в большую степень по модулю (как у вас) придётся писать совершенно другую реализацию. Ну или брать какую-то библиотеку которая работает с arbitrary-precision arithmetic.