Pascal
Tí và Tèo chơi 1 trò chơi.
Bắt đầu, trọng tài sẽ phát cho Tí một số nguyên dương a (0 < a ≤ 100).
Tiếp theo, trọng tài sẽ phát cho Tèo một số nguyên dương b (0 < b ≤ 100).
Và trọng tài đưa cho Tí và Tèo một hộp có n viên bi (0 < n ≤ 100).
Luật chơi như sau: tại lượt chơi, mỗi người sẽ bốc x viên bi từ trong hộp ra với x là ước chung lớn nhất (UCLN) của số bi hiện có trong hộp và con số mà người đó được trọng tài đưa cho. Trò chơi kết thúc khi không còn bi trong hộp để lấy. Người nào bốc cuối cùng sẽ là người chiến thắng.
Do Tí nhỏ tuổi hơn nên được ưu tiên bốc trước.
Yêu cầu tính tổng số lượt chơi của 2 người và nêu ra tên người thắng.
Ví dụ: Dữ liệu vào là (a = 3; b = 4; n = 12)
Luot 1: Ti boc x= 3 vien bi vi UCLN( 3, 12) = 3, so bi con lai la: 12 - 3 = 9
Luot 2: Teo boc x= 1 vien bi vi UCLN( 4, 9) = 1, so bi con lai la: 9 - 1 = 8
Luot 3: Ti boc x= 1 vien bi vi UCLN( 3, 8) = 1, so bi con lai la: 8 - 1 = 7
Luot 4: Teo boc x= 1 vien bi vi UCLN( 4, 7) = 1, so bi con lai la: 7 - 1 = 6
Luot 5: Ti boc x= 3 vien bi vi UCLN( 3, 6) = 3, so bi con lai la: 6 - 3 = 3
Luot 6: Teo boc x= 1 vien bi vi UCLN( 4, 3) = 1, so bi con lai la: 3 - 1 = 2
Luot 7: Ti boc x= 1 vien bi vi UCLN( 3, 2) = 1, so bi con lai la: 2 - 1 = 1
Luot 8: Teo boc x= 1 vien bi vi UCLN( 4, 1) = 1, so bi con lai la: 1 - 1 = 0
=> Teo thang
var n,a,b,dem,uc:byte;
//Tim UCLN cua 2 so
function UCLN(x,y:byte):byte;
begin
if x mod y = 0 then UCLN:=y
else UCLN:=UCLN(y,x mod y);
end;
//Main
begin
readln(a,b,n);
dem := 0;
while n<>0 do
begin
if n<>0 then
begin
inc(dem);
uc:=ucln(a,n);
writeln('Luot ',dem:2,': Ti boc x=',uc:2,' vien bi vi UCLN(',a:3,',',n:3,') =',uc:3,', so bi con lai la: ',n:3,' -',uc:3,' = ',n-uc:3);
n := n-uc;
if n=0 then
writeln(' => Ti thang');
end;
if n<>0 then
begin
inc(dem);
uc := ucln(b,n);
writeln('Luot ',dem:2,': Teo boc x=',uc:2,' vien bi vi UCLN(',b:3,',',n:3,') =',uc:3,', so bi con lai la: ',n:3,' -',uc:3,' = ',n-uc:3);
n := n-uc;
if n=0 then
writeln(' => Teo thang');
end;
end;
//writeln(dem);
readln;
end.