티스토리 뷰

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/01   »
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 29 30 31
글 보관함