Computer Science/Algorithm Problem

백준] 1193 - 분수찾기

TwinParadox 2018. 4. 10. 22:24
728x90

시간 제한 : 2초

메모리 제한 : 128MB




입력

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




출력

첫째 줄에 분수를 출력한다.




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	int n, k = 1;
	cin >> n;
	while (1)
	{
		if (k*(k + 1) / 2 == n)
		{
			if (k % 2 == 0)
				cout << k << "/" << 1;
			else
				cout << 1 << "/" << k;
			break;
		}
		else if (k*(k + 1) / 2 > n)
		{
			if (k % 2 == 0)
			{
				int cnt = n - k*(k - 1) / 2;
				cout << cnt << "/" << k - cnt + 1;
			}
			else
			{
				int cnt = n - k*(k - 1) / 2;
				cout << k - cnt + 1 << "/" << cnt;
			}
			break;
		}
		k++;
	}
	return 0;
}




Tip

사선 방향 규칙만 잘 풀어낼 수 있으면 쉽게 해결 가능하다.



728x90