https://www.acmicpc.net/problem/14490
문제
n, m이 :을 사이에 두고 주어질 때 두 수를 최대한으로 약분해서 출력한다. (1<=n,m<=100,000,000)
풀이
두 수의 최대 공약수 x를 구하여 n/x : m/x를 출력한다.
코드
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string s;
int n, m, x = 1;
vector<int> v;
//최대공약수로 나누기
int main() {
cin >> s;
for (int i = 0; i < s.length();i++) {
if (s[i] == ':') {
n = stoi(s.substr(0, i));
m = stoi(s.substr(i + 1, s.length() - i));
}
}
for (int i = 2; i <= n; i++) {
if (n % i == 0) v.push_back(i);
}
for (int i = 2; i <= m; i++) {
if (m % i == 0) {
for (int j = 0; j < v.size(); j++) {
if (i == v[j]) x = i;
}
}
}
cout << n / x << ':' << m / x;
}
'Koala - 14기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python3] 2606번 : 바이러스 (0) | 2024.05.06 |
---|---|
[백준/Java] 1327번 소트 게임 (0) | 2024.05.06 |
[PG/Java] Programmers 여행경로 (0) | 2024.05.05 |
[백준 2606번 바이러스/ 파이썬] (0) | 2024.05.05 |
15723번: n단 논법 (0) | 2024.05.05 |