Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

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.