program bai_giai;
uses crt;
var m:longint;
n:qword;
kq,i,j:byte;
begin
clrscr;
write('Nhap m: '); readln(m);
write('Nhap n: '); readln(n);
m:=m mod 10; kq:=m; j:=(n mod 4)+3;
for i:=1 to j do
begin
kq:=kq*m;
kq:=kq mod 10;
end;
write(kq);
readln;
end.
Nhân lấy số cuối nên số m chỉ cần số cuối.
Và lấy j=(n mod 4)+3 vì cứ nhân 4 lần thì sẽ quay lại số như -4 lần trước đó nên chỉ lấy n mod 4, cộng thêm 3 để tính cho phù hợp.
Phải làm như vậy vì n<10^16 thì vòng lặp thực hiện rất nhiều, cực kì nhiều lần dẫn đến chạy rất chậm.