//a * b % c == (a % c) * (b % c) //上面的是一个公式,接下来将介绍另一个公式,在介绍公式之前,先来看一个有关二进制的东西,那10进制数 11 来说 把11转为二进制1011,也就是2^3 + 2^1 + 2^0;在介绍一个初中的公式,a^(a1+a2+a3+……+an)==a^a1 * a^a2 * a^a3 *……* a^an;好有了这些预备知识,现在来讲重点 //要求 a ^ b % c 这个结果该怎么做呢? 首先将 b 拆成 二进制,然后就会出现a1+a2+a3+……+an,所以a ^ b % c == a ^ (a1 + a2 +a3+……+an) % c == a^a1 * a^a2 * a^a3 *……* a^an; //下面是我提供的代码; #include <iostream> #define MOD 100000007 using namespace std; long long quick_mi(long long a,int b) { int ans = 1; while (b) { if (b % 2) ans = ans * a % MOD; a = a * a % MOD; b = b >> 1; } return ans; } int main (){ int a,b; cin >> a >> b; cout << quick_mi(a,b) << endl; }