#36. [백준_C언어] 1193 : 분수찾기

 

 입력 코드 

#include <stdio.h>

main() {
	int X;
	scanf("%d", &X);

	int i, temp, count;
	if (X == 1) {
		printf("1/1\n");
	}
	else {
		count = 1;
		temp = X;
		int numerator, denominator;

		while (temp > count) {
			temp -= count;
			count++;
		}

		if (count % 2 == 0) {
			denominator = count;
			numerator = 1;

			for (i = 1; i < temp; i++) {
				denominator--;
				numerator++;
			}
		}
		else {
			denominator = 1;
			numerator = count;

			for (i = 1; i < temp; i++) {
				denominator++;
				numerator--;
			}
		}
		printf("%d/%d\n", numerator, denominator);
	}
}

 

 

 코드 설명 

#반복문 #수열 #규칙성 #수학 

#include <stdio.h>

main() {
	int X;
	scanf("%d", &X);

	int i,j,a,b;
	for (i = 0; i < 10000; i++) {
		for (j = 0; j < i; j++) {
			a = j;
			b = i - j;
		}
	}
	printf("%d", a / b);
}

처음에는 분자, 분모 따로 생각해서 반복문으로 해결하려고 했지만 어차피 저건 X번째 분수를 구할 수 있는 코드가 아니었다. 

#include <stdio.h>

main() {
	int X;
	scanf("%d", &X);

	int i, temp, count;
	if (X == 1) {
		printf("1/1\n");
	}
	else {
		count = 1;
		temp = X;
		int numerator, denominator;

		while (temp > count) {
			temp -= count;
			count++;
		}

		if (count % 2 == 0) {
			denominator = count;
			numerator = 1;

			for (i = 1; i < temp; i++) {
				denominator--;
				numerator++;
			}
		}
		else {
			denominator = 1;
			numerator = count;

			for (i = 1; i < temp; i++) {
				denominator++;
				numerator--;
			}
		}
		printf("%d/%d\n", numerator, denominator);
	}
}

홀수번째 대각선에서는 분자 감소, 분모 증가

짝수번째 대각선에서는 분자 증가, 분모 감소

 

 

 

참고한 사이트

gogojung.tistory.com/19

 

[C언어] 1193번

Q. 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 ··· 2/1 2/2 2/3 2/4 ··· ··· 3/1 3/2 3/3 ··· ··· ··· 4/1 4/2 ··· ··· ··· ··· 5/1 ··· ··· ·..

gogojung.tistory.com

 

 

 

 문제 출처 

www.acmicpc.net/problem/1193

 

1193번: 분수찾기

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

www.acmicpc.net