알고리즘

[C++] 백준 14490번 백대열

J3SUNG 2019. 9. 17. 23:38
728x90

약분하는 문제입니다.

x, y를 입력받고 x, y를 div로 나누어 떨어지는지 확인하고
아닐시 div를 1감소하고 나누어 떨어질때까지 반복합니다.
(x > y div = y, x < y div = x)

나누어 떨어질 경우 나누어 떨어진 값을 출력합니다.

 

#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
	int x, y;
	int div;
	int i = 0;
	string s;
	string temp;

	cin >> s;

	while (1) {
		if (s[i] == ':') {
			temp = s.substr(0, i);
			x = stoi(temp);

			temp = s.substr(i + 1, s.length());
			y = stoi(temp);
			break;
		}
		++i;
	}

	div = min(x, y);

	while(x % div != 0 || y % div != 0) {
		--div;
	}

	cout << x / div << ":" << y / div << endl;

	return 0;
}