快速幂取模

快速幂取模

背景

king大佬思考了一个问题:7的10次方,怎样算比较快?

方法1:最朴素的想法,7*7=49,49*7=343,... 一步一步算,共进行了9次乘法。

这样算无疑太慢了,这时他想到, 也许可以拆分问题.

方法2:先算7*7得49,则7的5次方为49*49*7,再算它的平方,共进行了4次乘法。

模仿这样的过程,我们得到了快速幂算法。

同时有(a * a)%p == (a%p) * (a%p),请注意 每一步都取模 以免超过所能存储的最大数据范围

题目描述

给你三个整数 a,b,p
求 a^b mod p(a的b次方%p)
时间限制: 200ms
Tips:可以认为评测机1s内可以进行100,000,000次计算
int类型的变量可最大储存2∧31-1,long long则是2∧63-1

输入格式

输入只有一行三个整数,分别代表 a,b,p,中间以空格隔开。
保证0<a,b,p<= 2^33
请小心溢出

输出格式

输出一行一个字符串

a^b mod p=s
其中 a,b,p 分别为题目给定的值, s 为运算结果。
注意 空格

样例

输入

3 4 10

输出

3^4 mod 10=1

信息

ID
1031
难度
9
分类
(无)
标签
(无)
递交数
465
已通过
8
通过率
2%
上传者

相关

在下列比赛中:

周末测试2