求A^B Mod N 的值....
http://unbelievable.ycool.com/post.706759.html
这是做ZJU 2150 时候学习的
在 实用算法的分析和程序设计上有介绍.....
大致思想 是把 B (即 指数) 转化为 2 进制.... 从低位往高位算.... 若当前这位为 1 则 d:=d*t mod n; 否则就不断的把 t:=t*t mod n .....
自己还是不太清楚原理..... 干脆死记算了......
在 实用算法的分析和程序设计上有介绍.....
大致思想 是把 B (即 指数) 转化为 2 进制.... 从低位往高位算.... 若当前这位为 1 则 d:=d*t mod n; 否则就不断的把 t:=t*t mod n .....
自己还是不太清楚原理..... 干脆死记算了......
function answer(a,b,n:longint):longint; var d,t:longint; begin d:=1; t:=a; while b>0 do begin if b mod 2=1 then d:=d*t mod n; b:=b div 2; t:=t*t mod n; end; answer:=d; end; |

浙公网安备 33010602011771号