#34. 快速幂

快速幂

题目背景

快速幂是一种用于高效计算底数的nn次幂的算法,其时间复杂度为O(log2N)O(log₂N),相比朴素的O(N)O(N)算法,效率有了极大的提升。快速幂算法的核心思想是利用指数的二进制表示来减少乘法和幂运算的次数。

你已经学习了快速幂,来写写这一题吧!

题目描述

已知 nn 个逻辑变量能生成 22n2^{2^n} 个真值不同的命题公式。

现给定两个正整数 n,pn, p, 请输出22nmodp2^{2^n} \mod p 的值。

输入格式

一行,两个正整数 nn (1n105)(1\leq n \leq 10^5), pp (1p2321)(1\leq p \leq 2^{32}-1)

输出格式

一行,一个整数表示22n2^{2^n} modmod pp 的值

输入输出样例 #1

输入 #1

3 2333

输出 #1

256

输入输出样例 #2

输入 #2

6 2333

输出 #2

410