超级乘方【修正版】

我表示我完全是看题解莫名其妙对了,题目和代码暂存在这里。

如有大牛路过,欢迎留评论

【a^b≡a^(b mod phi(c)+phi(c))  (mod c)(b>=phi(c))】【公式的条件很苛刻,原以为(b>=phi(c))没有意义】

其中phi(c) 是欧拉函数

原题目:

 

一、超级数

【题目描述】:

众所周知,多次加法运算是乘法,多次乘法运算是乘方,那么多次乘方运算呢?比如:

2^2=4

2^2^2=16

2^2^2^2=65536

现在我需要你的力量来计算出:

a1^a2^a3^a4^a5^...an mod p

但是,这个数光是想想就远远超过了整个宇宙的大小,所以你只要求出它的值MOD P就可以了

 

【输入】:

第一行两个数NP,如题目描述。

第二行N个数,表示a1~n

 

【输出】:

仅一个数,表示它的值mod p的结果。

 

【样例输入】:

5 13

2 2 2 2 2

 

【样例输出】:

3

 

【说明】:

20%的数据N3ai<1000

40%的数据aip为质数或1

100%的数据N20aipMaxlongint

原题解: 挖掘乘法运算在取摸下的置换规律

 

(a^b^c^...) mod mo >>> [a^( (b^c^...) mod phi( mo / gcd(mo,a^x) ) ) ] mod mo

{x 只要稍微大一点就可以了,梁盾取的是43,学号==}

既可以递归为子问题。

另外有几个特殊情况,具体见标程。

fgm中+i是个细节
对于求phi,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值