快速冪
要算 ,最暴力的方法就是乘  次,不過這樣的時間複雜度是 ,太慢了。
利用  的性質,我們可以把指數拆開,例如: 
 乘上自己會得到 、再乘自己會得到 ,每次指數都會變兩倍,只要做  次就可以拿到  了。因此,可以用這樣的方式在  的時間算出答案:
1 2 3 4 5 6 7 8 9 10
   | const ll MOD = 1000000007; ll fp(ll a, ll b){     int ans = 1;     while(b > 0){         if(b & 1) ans = ans * a % MOD;         a = a * a % MOD;         b >>= 1;     }     return ans; }
   |