반응형
[ 문제 ]
분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자.
두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
[ 코드 ]
string[] s1 = Console.ReadLine().Split();
string[] s2 = Console.ReadLine().Split();
int denominatorA = int.Parse(s1[1]);
int denominatorB = int.Parse(s2[1]);
int numeratorA = int.Parse(s1[0]) * denominatorB;
int numeratorB = int.Parse(s2[0]) * denominatorA;
int denominator = denominatorA * denominatorB;
int numeratorSum = numeratorA + numeratorB;
int resultGCD = GCD(numeratorSum, denominator);
numeratorSum /= resultGCD;
denominator /= resultGCD;
Console.Write($"{numeratorSum} {denominator}");
static int GCD(int n, int d)
{
while (d > 0)
{
int temp = d;
d= n % d;
n = temp;
}
return n;
}
[ 풀이 ]
분자와 분모의 최대공약수를 구하고, 최대공약수로 분자와 분모를 나누면 기약분수가 된다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1735
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 19532번 수학은 비대면강의입니다 (2) | 2024.02.16 |
---|---|
[C#] 백준 2485번 가로수 (0) | 2024.02.15 |
[C#] 백준 2775번 부녀회장이 될테야 (0) | 2024.02.15 |
[C#] 백준 2798번 블랙잭 (2) | 2024.02.15 |
[C#] 백준 15829번 Hashing (2) | 2024.02.14 |