-
백준 14490번 : 백대열(C 언어)c c++ 언어 공부 2023. 9. 5. 10:10
https://www.acmicpc.net/problem/14490
14490번: 백대열
n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000)
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031#include <stdio.h>int gcd(int a, int b){int A=0, B=0;if (a > b){A = a;B = b;}else{A = b;B = a;}if (B == 0){return A;}elsereturn gcd(B, A % B);}int main() {int n, m;scanf("%d:%d", &n, &m);int n_n = n / gcd(n, m);int m_n = m / gcd(n, m);printf("%d:%d", n_n, m_n);}cs 문제 설명: 문제의 주제는 "n:m이 주어진다. 최대한으로 약분하여 출력하라"입니다. 여기서 n과 m은 분자와 분모의 값을 나타내며, 이를 최대한으로 약분하여 출력해야 합니다.
코드 설명:
- int gcd(int a, int b): 최대 공약수를 계산하는 함수를 정의합니다. 이 함수는 유클리드 호제법을 사용하여 GCD를 구합니다.
- int n_n = n / gcd(n, m); int m_n = m / gcd(n, m);: 입력된 n과 m에 대해 GCD를 계산하고, 이를 사용하여 분자와 분모를 최대한으로 약분합니다. 이렇게 함으로써 주어진 분수를 최대한으로 간략하게 표현합니다.
- printf("%d:%d", n_n, m_n);: 최대한으로 약분된 분자와 분모를 출력합니다.
코드는 주어진 입력 값을 가지고 최대공약수를 계산하고, 이를 사용하여 분자와 분모를 최대한으로 약분한 뒤 결과를 출력하는 방식으로 동작합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 10797번 : 10부제(C 언어) (0) 2023.09.06 백준 16395번 : 파스칼의 삼각형 (C 언어) (0) 2023.09.05 백준 16435번 : 스네이크버드 (C 언어) (0) 2023.09.04 백준 1526번 : 가장 큰 금민수 (C 언어) (0) 2023.09.04 백준 1264번 : 모음의 개수 (C 언어) (0) 2023.09.01