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를 구한 다음 기약분수 꼴로 출력