문제 링크


🔷 분류

수학, 구현

✒️ 문제 설명

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

⬅️ 입력

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

➡️ 출력

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

💻 코드 (C++)

#include <iostream>
using namespace std;

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  
  int n;
  cin >> n;
  
  int cnt = 1;
  
  while(1) {
    if(n - cnt > 0) {
      n -= cnt;
      cnt++;
    }
    else break;
  }
  
  int up, down;
  
  if(cnt % 2 == 0) {
    up = n;
    down = cnt - n + 1;
  }
  else {
    up = cnt - n + 1;
    down = n;
  }
  
  cout << up << "/" << down;
  return 0;
}

글 이동

Comments