【jzoj5389】【NOIP2017提高A组模拟9.26】【解梦】
2017-09-28 19:11
399 查看
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 的结果。
solution
可以发现答案是aab−1%(p−1)%p。
code
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define LF double #define LL long long #define ULL unsigned int #define fo(i,j,k) for(int i=j;i<=k;i++) #define fd(i,j,k) for(int i=j;i>=k;i--) #define fr(i,j) for(int i=begin[j];i;i=next[i]) using namespace std; int const mn=1e7+3,mo=1e9+7; int n,m; int Pow(LL x,int y){ LL z=1; while(y){ if(y&1)z=z*x%mo; x=x*x%mo; y>>=1; } return z; } int Pow(LL x,int y,int mo){ LL z=1; while(y){ if(y&1)z=z*x%mo; x=x*x%mo; y>>=1; } return z; } int main(){ freopen("dream.in","r",stdin); freopen("dream.out","w",stdout); scanf("%d%d",&n,&m); if((n<=1e7)&&(m<=1e6)){ int ans=n;m--; fo(i,1,m)ans=Pow(ans,n); printf("%d",ans); }else printf("%d",Pow(n,Pow(n,m-1,mo-1),mo)); return 0; }
相关文章推荐
- JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
- 【JZOJ 5390】【NOIP2017提高A组模拟9.26】逗气
- JZOJ5390. 【NOIP2017提高A组模拟9.26】逗气 单调队列
- JZOJ5390. 【NOIP2017提高A组模拟9.26】逗气
- JZOJ 5390. 【NOIP2017提高A组模拟9.26】逗气
- [JZOJ5390]【NOIP2017提高A组模拟9.26】逗气
- [JZOJ5391]【NOIP2017提高A组模拟9.26】卡常题
- JZOJ 5391. 【NOIP2017提高A组模拟9.26】卡常题
- 【jzoj5289】【NOIP2017提高组A组模拟8.17】【偷笑】【数据结构】
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C
- 【JZOJ 5394】【NOIP2017提高A组模拟10.5】Ping
- [JZOJ5396]【NOIP2017提高A组模拟10.6】Blocks
- 【JZOJ 5402】【NOIP2017提高A组模拟10.8】God Knows
- JZOJ 5403. 【NOIP2017提高A组模拟10.8】Lost My Music
- 【JZOJ 4931】【NOIP2017提高组模拟12.24】A
- 【jzoj5350】【NOIP2017提高A组模拟9.7】【陶陶摘苹果】【动态规划】
- 【jzoj5247】【NOIP2017提高A组模拟8.10】【计算几何】【二分答案】
- JZOJ5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人 并查集+启发式合并
- jzoj. 100031. 【NOIP2017提高A组模拟7.9】外星密码
- JZOJ 100036 【NOIP2017提高A组模拟7.10】随机