알고리즘 문제

[백준] 1193번 분수찾기

feelcoding 2020. 1. 31. 19:12
728x90
 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	if (n == 1) {
		cout << "1/1";
		return 0;
	}
	int index = 2;
	int sum = 1;
	while (true) {
		if (sum > n) {
			sum -= (index - 2);
			int numerator;
			int denominator;
			if (index % 2 == 1) {
				numerator = 1;
				denominator = index - 1;
				while (sum != n) {
					numerator++;
					denominator--;
					sum++;
				}
			}
			else {
				numerator = index - 1;
				denominator = 1;
				while (sum != n) {
					numerator--;
					denominator++;
					sum++;
				}
			}
			cout << numerator << "/" << denominator;
			break;
		}
		else if (sum == n) {
			if (index % 2 == 0) {
				cout << 1 << "/" <<index - 1;
			}
			else {
				cout << index - 1 << "/" << 1;
			}
			break;
		}
		else {
			sum += index;
			index++;
		}
	}
	return 0;
}
728x90