본문 바로가기

공부/백준

1193 c 백준

#include <stdio.h>
int main() {
    int N, son, mother;
    // (1,1/1) (2,1/2) (3,2/1) (4,3/1) (5,2/2) (6,1/3), (7~10)        (11~15)
    //  1+1        1+2,2+1         3+1, 2+2, 1+3         1+4,..,4+1              
    // a=1         a=2                a=3                   4           5
    // b=0        b=1, 0        b=2,     1,      0      b=3 ~  0       b=4~0 
    scanf("%d", &N);
    int sum = 0;
    int a = 1;
    int b = 0;
    while (1) {        //몇번째 대각선인지(분자분모더해서같은것끼리그룹핑)
        sum += a;
        if (N <= sum) {
            b = sum - N;
            break;
        }               // b는 같은그룹내 뒤에서 몇번째인지 
        a ++;
    }
    if (a % 2 == 1) {
        son = b + 1;    //a가 홀수일 경우, 1에서 a까지 분모가 1씩증가, 분자 1씩감소
        mother = a - b;
    }
    if (a % 2 == 0) {
        son = a - b;    //a가 짝수일 경우, 1에서 a까지 분자가 1씩증가, 분모 1씩감소
        mother = b + 1;
    }
    printf("%d/%d", son, mother);
}