문제 설명
소수점 뒤에 계속되지 않고 유한한 십진수를 유한 십진수라고 합니다. 분수를 소수로 변환할 때 분수를 유한 소수로 나타낼 수 있는지 확인하려고 합니다. 분수가 유한 소수가 되기 위한 조건은 다음과 같습니다.
- 기약분수로 나타낼 때 분모의 소인수는 2와 5만 있으면 됩니다.
두 개의 정수 와 함께 b가 매개변수로 지정된 경우 a/b가 유한 소수인 경우 1을 반환하고 무한 소수인 경우 2를 반환하도록 solve 함수를 완성합니다.
제한
알아채다
- ㅏ, b는 정수
- 0 ≤ 1,000
- 0 b ≤ 1,000
I/O 예시
| ㅏ | 비 | 결과 |
| 7 | 20 | 하나 |
| 11 | 22 | 하나 |
| 12 | 21 | 2 |
I/O 예시 설명
I/O 예제 #1
- 분수 7/20은 기약 분수입니다. 분모에서 20의 소인수는 2와 5이므로 유한합니다. 그래서 1을 반환합니다.
I/O 예제 #2
- 분수 11/22는 환산 분수로 표현하면 1/2입니다. 분모 2는 소인수가 2개뿐이므로 유한합니다. 그래서 1을 반환합니다.
I/O 예제 #3
- 분수 12/21은 환산 분수로 4/7입니다. 7의 분모는 소인수가 7이므로 무한소수입니다. 따라서 2를 반환합니다.
알아채다
- 기약 분수를 만들기 위해 분자와 분모의 최대 공약수로 줄입니다.
- 정수도 유한 소수로 분류됩니다.
※ 참고 – 2022년 11월 10일 테스트 케이스가 추가되었습니다. 이전에 제출한 코드가 실패할 수 있습니다.
|
하나
2
삼
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
수업 해결책 {
공공의 공전 내부 gdc(내부 ㅏ, 내부 나) { // 최대 공약수
만약에(ㅏ<비){ // 유클리드 알고리즘의 조건
내부 온도 = ㅏ;
ㅏ = 비;
비 = 온도;
}
~하는 동안(비!=0) { // 유클리드 알고리즘
내부 아르 자형=떨어져 있는;
ㅏ=비;
비=아르 자형;
}
돌려 주다 ㅏ;
}
공공의 내부 해결책(내부 ㅏ, 내부 b) {
내부 답변 = 하나; // 유한 십진수 가정
내부 GDC = gdc(a,b); // 최대 공약수
내부 숫자 = 비/gdc; // 기약할 수 없는 분수를 얻기 위해 최대 공약수로 나눕니다.
// 소인수가 2와 5이면 유한 소수입니다.
내부 나=2;
~하는 동안(아니요>=나) {
만약에(숫자% i==0) {
만약에(나!=2 && 나!=5) {
답변 = 2; // 무한 십진수
부서지다;
}
숫자 /= 나;
}다른 {
나++;
}
}
돌려 주다 답변;
}
}
|
CS |
| 댓글 표시…
“기약분수로 나타낼 때, 분모에는 소인수 2개와 5개만 있어야 합니다.” 조건을 만족하기로 결정 |

