Pascal/BAEKJOON
pascal 6919번 Fraction Action (백준)
rofn123
2025. 8. 29. 19:08
var a,b,x,y,z:int64;
begin
read(a,b);
if a=0 then write(0)
else if a<b then begin
x:=b;y:=a;z:=a;
while 1=1 do begin
if x mod y = 0 then break
else begin z:=x mod y; x:=y mod x;y:=z;end;
end;
write(a div z,'/',b div z);
end
else if a mod b=0 then write(a div b)
else if a>b then begin
write(a div b,' ');
x:=b;a:=a mod b;y:=a;z:=y;
while 1=1 do begin
if x mod y = 0 then break
else begin z:=x mod y; x:=y mod x;y:=z;end;
end;
write(a div z,'/',b div z);
end;
end.
풀이 : 많은 조건 분기, 유클리드 호제법
1. numerator 가 0 인 경우 -> 0 출력
2. numerator < denominator 인 경우 -> 최대공약수를 구한 다음 기약분수 꼴로 출력
3. numerator == denominator 인 경우 -> 몫을 출력
4. numerator > denominator 인 경우 ->먼저 몫을 출력한 뒤, 나머지와 denominator을 이용하여 2번처럼 gcd를 구한 다음 기약분수 꼴로 출력