Bài toán này nếu giải tay thì nhanh thôi các bạn, nhưng mà mất công học code thì phải làm cho ra trò nên thôi nay ngồi gõ lại cho các bạn học khóa sau tham khảo.
program huan_code;
uses crt; var m:array[1..20] of byte; var dem,a,z,i,j,x,n: integer; procedure nhap(); begin writeln('Chuong trinh tinh a^z mod n '); write('Nhap he so A: '); readln(a); write('Nhap he so Z: '); readln(z); write('Nhap he so N: '); readln(n); end; function do_dai(n:integer): integer; begin i := 1; dem := 0; Repeat m[i]:=n mod 2; n := n div 2; i := i+1; Until(n=0); For j:=i-1 downto 1 do begin dem := dem+1; end; do_dai := dem; end; procedure hien_bit(); begin writeln('Do dai chuoi bit la : ',do_dai(z)); write('Bieu dien ',z,' thanh day bit: '); For j:=i-1 downto 1 do write(m[j]); writeln; end; procedure tinh(); begin x := 1; for j:= (do_dai(z)) downto 1 do begin x := (x*x) mod n; if (m[j]=1) then x:=(x*a) mod n; writeln('i =',j-1,' b(i) = ',m[j] ,' : x = ',x); end; writeln('Ket qua ',a,'^',z,' mod ',n,' = ',x); end; begin nhap(); hien_bit(); tinh(); readln; end.