728x90
1. 문제
https://codeup.kr/problem.php?id=2604
[출처 : 코드업(https://codeup.kr/)]
이번 문제는 실를 기약분수로 변화하는 문제입니다.
기약분수 : 더 이상 약분할 수 없는 분수.
2. 풀이방법
STEP 1. 분자의 자리수에 맞춰 분모를 계산
분자가 소수 첫번째 자리 -> 분모 : 10
분자가 소수 두번째 자리 -> 분모 : 100
분자가 소수 세번째 자리 -> 분모 : 1000
STEP 2. 분자와 분모를 동시에 나눠줄수 있으면 나누기
3. 해답
#include <stdio.h>
#include <string.h>
int my_atoi(char* s) {
// 문자열을 숫자로 변환
int tmp = 0;
for (int i = 0; i < strlen(s); i++) {
if (s[i] == NULL) break;
tmp *= 10;
tmp += ((int)s[i] - 48);
}
return tmp;
}
int main() {
char s[7];
int denominator; // 분모
int numerator = 1; // 분자
int tmp;
scanf("0.%s", s);
denominator = my_atoi(s);
for (int i = 0; i < strlen(s); i++) {
numerator *= 10;
}
for (int i = denominator; i > 0; i--) {
if (((denominator % i) == 0) && ((numerator % i) == 0)) {
// 분모,분자를 동시에 나눟어줄수 있으면
tmp = i;
break;
}
}
printf("%d %d\n", denominator / tmp, numerator / tmp);
return 0;
}
'프로그래밍 > CodeUp' 카테고리의 다른 글
CodeUp[Q_2607] : 쌍둥이 소수 (0) | 2020.04.04 |
---|---|
CodeUp[Q_2605] : 캔디팡 (0) | 2020.04.03 |
CodeUp[Q_2115] : 팩토리얼 계산 (Large) (0) | 2020.03.30 |
CodeUp[Q_2112] : 매우 큰 수의 비교 (0) | 2020.03.29 |
CodeUp[Q_2042] : 소화기가 필요해 (0) | 2020.03.28 |