Cho một phân số có tử số là 𝑎 và mẫu số là 𝑏. Hãy chuyển phân số về dạng hỗn số gồm phần nguyên, tử số và mẫu số ở dạng tối giản. Dữ liệu vào: Tệp văn bãn HONSO.INP gồm hai số nguyên dương là 𝑎 và 𝑏 (𝑎, 𝑏 ≤ 10^9) ghi cách nhau một dấu cách. Kết quả: Ghi ra tệp văn bản HONSO.OUT gồm ba số nguyên n, t và m tương ứng là phần nguyên, tử số và mẫu số. Nếu bài toán không có nghiệm thì ghi số -1. HONSO.INP HONSO.OUT 12 9 1 1 3 3 0 -1

2 câu trả lời

uses crt;
var a, b: longint;

function gcd(a, b: longint): longint;
var r: longint;
begin
    a:=abs(a); b:=abs(b);
    while b <> 0 do
        begin
            r:=b;
            b:=a mod b;
            a:=r;
        end;
    exit(a);
end;

begin
clrscr;
    read(a, b);

    if b = 0 then write(-1)
    else begin
        write(a div b, ' ');
        write((a mod b) div gcd(a mod b, b), ' ', b div gcd(a mod b, b));
    end;
readln; readln;
end.

uses crt; type int = longint; var a, b, tmp: int; function gcd(a, b: int): int; begin a:=abs(a); b:=abs(b); while a * b <> 0 do begin a:=a mod b; if a <> 0 then b:=b mod a; end; exit(a + b); end; begin clrscr; readln(a, b); if b = 0 then begin write(-1); exit; end; write(a div b, #32); a:=a mod b; tmp:=gcd(a, b); a:=a div tmp; b:=b div tmp; write(a, ' ', b); readln; end. //  (˵¬‿¬˵)