Bài 1 thì trước tiên, ta lập 1 hàm tính a^n (để bắt tính m^n mà).
Để tính a^n(trường hợp tổng quát), ta cho 1 biến s=a*a*a*a*a...*a(n lần *a) bằng cách cho vòng for từ 1 tới n:
For i:=1 to n do
lỗi lần i tăng thì là 1 lần nhân s với a:
s:=s*a;
cuối cùng gán BT:=s vì đây là Function,.
Chẳng hạn:
a=2 và n=3, ta có:
gán s:=1 trước tiên
For i:=1 to n do s:=s*a thành:
For i:=1 to 3 do s:=s*2
i=1 thì s=s*a=1*2=2
i=2 thì s=s*a=2*2=4(vì ở trên, s đã =2 rồi, nhân tiếp với a=2 nữa là 4)
i=3 thì s=s*a=4*2=8
Nên s=8, cuối cùng, ta gán BT=8 là xong hàm tính a^n.
Code:
Write('Nhap so m,n,k:');
Readln(m,n,k);{nhập m,n,k theo để bài}
a:=BT(m,n);{tính m^n theo hàm tính a^n ở trên, ở đây m là a và n vẫn là n.Và ta gán m^n=1 biến có tên a }
Str(a,s);{bước này đổi a thành xâu s}
d:=Length(s)-k;{ta tính hiệu của độ dài của xâu s với k(length(s)-k) và gán vào biến d}
Delete(s,1,d);{lệnh này để xóa d ký tự của xâu s bắt đầu từ vị trí 1, khi đó xâu s chỉ còn số k ký tự cuối mà ta cần}
Write(s);{In ra xâu còn lại}
VD:
m=2
n=5
k=1;
a:=BT(m,n)=2^5=32(tính như ở trên)
gán a vào xâu s (str(a,s)) nên s='25';
Length(s)=2 (độ dìa của xâu =2)
d:=length(s)-k=2-1=1
Delete(s,1,d) thành Delete(s,1,1), xóa 1 ký tự của xâu s, bắt đầu từ ký tự đầu tiên:
s='25', sau lệnh delete, s='5'
In ra 5 và thoát !
Nếu bạn dùng Free Pascal và khái báo m,n,k là int64 thì không đến nỗi đâu !
Khai báo luôn cả a,n trong FUnction là int64 nữa cũng tốt !
Bookmarks