洛谷 P1226 取余运算||快速幂

题目描述

输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

输入输出格式

输入格式:
三个整数b,p,k.

输出格式:
输出“b^p mod k=s”

s为运算结果

输入输出样例

输入样例#1:
2 10 9
输出样例#1:
2^10 mod 9=7

分析:就是快速幂。还有mod k,高精度都不用。

代码:

var n,m,p,t:int64;
procedure try(m:int64);
var x:int64;
begin
 if (m=0) or (m=1) then exit;
 try(m div 2);
 if odd(m) then x:=n else x:=1;
 t:=((t mod p)*(t mod p)*x) mod p;
end;
begin
 readln(n,m,p);
 if (m=0) then begin write('1'); exit; end;
 t:=n mod p;
 try(m);
 write(n,'^',m,' mod ',p,'=',t);
end.

你可能感兴趣的:(洛谷 P1226 取余运算||快速幂)