티스토리 뷰

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

 

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함