[BOJ / C++] #1193 분수찾기

Inryu·2020년 8월 19일
0

Problem Solving

목록 보기
4/51
post-thumbnail

🍐문제

https://www.acmicpc.net/problem/1193

🍐풀이 과정

분모는

(1) → (2→ 1)→ (1→ 2→ 3)→ (4→ 3→ 2→ 1) →(1→2→3→4→5) 순서

분자는

(1)→(1→2) → (3→2→1) → ( 1→2→3→4) → (5→4→3→2→1)

각 레이어는 1, 2, 3, 4 개의 원소로 이루어져있는 등차수열임.

X가 어느 레이어의 몇번째 자리 수인지 구해야함.

🍐코드

//#2992 벌집
#include <iostream>
using namespace std;

int main(void) {

	//입출력 속도 향상 
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio(false);

	int i;
	int X;
	int group = 1; // 레이어
	int up, down; //분모와 분자

	cin >> X;

	while (1) {

		if ((X - group) > 0) {
			X -= group;
			group++;
		}

		 // 한 그룹의 원소 개수

		else break;
	}

	if (group % 2 == 0) {
		//분모는 내림차순
		for (i = 1; i < X; i++) {
			group--;
		}

		down = group;
		
		//분자는 오름차순(그대로)
		up = X;
	
	}

	//홀수번째 그롭
	else {

		//분자는 내림차순
		for (i = 1; i<X; i++) {
			group--;
		}

		up = group;

		//분모는 오름차순(그대로)
		down = X;

	}

	cout << up << "/" << down;

}
profile
👩🏻‍💻

0개의 댓글