pascal 中快速幂取模运算有哪些内容啊

2025-03-05 09:29:31
推荐回答(1个)
回答1:

给你一道例题吧。

Time Limit: 3 second
Memory Limit: 2 MB


【问题描述】

    输入b,p,k的值,求bp mod k的值。其中b、p、k*k为长整形数。



【输入格式】


    1行。先后为b、p、k的值,中间用空格隔开

【输出格式】

    仅1行。b^p mod k的结果值(mod的前后有一个空格,等号前后无空格)

【输入样例】

    2 10 9

【输出样例】

    2^10 mod 9=7


【代码】

原理是 (a *b ) mod c =((a mod c)*(b mod c))  mod c

var
  b,p,k,rest:longint;

procedure try(x:longint);
begin
  if x=0 then exit;
  try(x div 2);
  rest:=rest*rest mod k;
  if odd(x) then//odd是判断这个数是否为奇数,如果是则返回true
    rest:=b mod k * rest mod k;
end;

begin
  readln(b,p,k);
  rest:=1;
  try(p);
  writeln(b,'^',p,' mod ',k,'=',rest);
end.