Programmers Level 0

문제 설명

소수점 뒤에 계속되지 않고 유한한 십진수를 유한 십진수라고 합니다. 분수를 소수로 변환할 때 분수를 유한 소수로 나타낼 수 있는지 확인하려고 합니다. 분수가 유한 소수가 되기 위한 조건은 다음과 같습니다.

  • 기약분수로 나타낼 때 분모의 소인수는 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개만 있어야 합니다.” 조건을 만족하기로 결정