JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
生活随笔
收集整理的這篇文章主要介紹了
JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
DYY 很善于解夢,昨晚,他夢見自己來到了一個高度發達的國度。
眾所周知,我們現在有極為常用的三級運算,+、、^。其中,a*b=a+a+a+…+a(b 個a),a^b=a*a*a…*a(b 個a)。但是,在這個國家,還有第四級運算——♂,a♂b=a^a^a^…^a(b 個a,從左往右計算)。同時,由于這個國家的歷史背景,他們非常反感高精度,所以a♂b 的結果是經過1e9+7 取模的。
DYY 覺得這個夢可能意味著他將成為全球第一的解夢第二的數學之神,但要徹底解開它,DYY 必須算出來a♂b 的結果。
Input
第一行:兩個正整數,a 和b。
Output
一個整數,a♂b mod 1e9+7。
Sample Input
2 4
Sample Output
256
Data Constraint
Hint
2♂4=2^2^2^2=4^2^2=16^2=256
Solution
題意:給定 a 和 b ,求 (...((aa)a)a...)a ( b 個 a) 。
不難想到這個東西就是:
aab?1然后快速冪跑就可以了。
要注意一下,ap?1≡1(mod?p) ,所以在計算 ab?1 時,模 109+6 。
時間復雜度 O(log?a+log?b) 。
Code
#include<cstdio> using namespace std; typedef long long LL; const int mo=1e9+7; LL n,m; inline LL ksm(LL x,LL y,int z) {LL s=1;while(y){if(y&1) s=s*x%z;x=x*x%z;y>>=1;}return s; } int main() {scanf("%lld%lld",&n,&m);printf("%lld",ksm(n,ksm(n,m-1,mo-1),mo));return 0; }總結
以上是生活随笔為你收集整理的JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ 5379. 【NOIP2017
- 下一篇: JZOJ 5390. 【NOIP2017