Đề bài : Cho 2 số nguyên dương a và b, hãy tìm chữ số cuối cùng của ab.
Hỏi: Em dùng vòng for từ 1->b và nhân cho a. Sau đó lại chia lấy dư nhưng chỉ được 15/50đ. Em đọc thấy mấy ac dùng getline gì đó e không hiểu. Ai cho em cách tốt hơn được không ạ?
Tìm chữ số cuối cùng của a^b
Bài này dùng bình phương - nhân
a2k = (ak)2
bài này bạn cho 1 số cụ thể và viết ra sẽ thấy chữ số cuối cùng có qui luật tuần hoàn. vd a = 3: 30 = 1, 31= 3, 32= 9, 33= 27, 34 = 81, 35= 243, 36 = 729, … Qui luật tuần hoàn các chữ số cuối cùng là 1, 3, 9, 7. Từ đó với số b cụ thể, bạn có thể dễ dàng tính ra.
Chữ số cuối cùng của a^b = (a%10)^b%10. Không biết đúng không nhỉ?
Số mũ mod 4 chứ phi(10) = 4.
Thực ra mod 2 có chu kì 1 (vì {1}) và mod 5 có chu kì 4.
Chuyển từ tập số nguyên Z sang Z/10Z tính toán dễ hơn, chỉ cần kết hợp thêm 2 mệnh đề sau:
Mệnh đề 1:
Với n là số nguyên dương, x thuộc { 0, 1, 5, 6 }, xn = x, hay:
0n = 0, 1n = 1, 5n = 5, 6n = 6.
Mệnh đề 2:
Với mọi x thuộc Z/10Z nhưng không thuộc { 0, 1, 5, 6 }, luôn tồn tại số nguyên dương p sao cho xp = q, với q thuộc { 1, 6 }.
Ví dụ: tìm chữ số cuối cùng của 172107
Vì 172 = 2 (Z/10Z), nên 172107 = 2107.
Ta có 2107 = 24.26 + 3 = (24)26 . 23.
Do 16 = 6 trên Z/10Z nên 1626 = 626 = 6 (theo mệnh đề 1)
Mặc khác 1626 = (24)26, nên (24)26 = 6.
Ngoài ra, ta có 23 = 8.
Tóm lại:
172107 = 2107 = (24)26 . 23 = 6.8 = 48 = 8.
Xin chào, bạn có thể cho xin trang web test đề đó được không ạ, mình thử test cách của mình.
mình nhớ là của freecontest nào đấy. sr không có test
Vậy tại sao bạn lại biết bạn được 15/50 điểm? Test này từ lâu trước đây? Bạn có thể nhớ lại tên của contesst không :((
https://drive.google.com/drive/folders/19t9fJJ88VxElJG1loWqmuL6Hb_ZtdfRT?fbclid=IwAR0T-SMlbWi0AL9h_sEXCEv-e0CDTPVaEJwIlihicwWh-bPR8BT_XjGf3uk bài begin nha bạn
10^100000 thì… đúng là phải mod 4 thôi O(1) luôn.
Dàn này mỗi bài INCPOS ko phải là beginner
There you go.
python 3
def LastDigit(a = 0, b = 0):
a %= 10;
res = 1;
while b > 0:
if b & 1:
res = (res * a)%10
a = (a*a)%10
b >>= 1
return res