728x90
https://www.acmicpc.net/problem/5086
5086번: 배수와 약수
각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
www.acmicpc.net
문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
- 첫 번째 숫자가 두 번째 숫자의 약수이다.
- 첫 번째 숫자가 두 번째 숫자의 배수이다.
- 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
입력
입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
출력
각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
예제 입력 1
8 16
32 4
17 5
0 0
예제 출력 1
factor
multiple
neither
문제 풀이
1. 주어진 두 수 a, b 를 입력으로 받는다.
2. 서로 다른 수이기 때문에 a < b 일 경우이면서 약수의 조건에 해당되는 지 확인다. b 를 a 로 나눠서 0으로 되면 약수 조건에 해당 된다.
3. a > b 일 경우이면서 배수의 조건에 해당되는 지 확인다. a 를 b 로 나눠서 0으로 되면 배수 조건에 해당 된다.
4. 2, 3 에 해당되지 않으면 neither 로 출력한다.
코드
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
while (true) {
val (a, b) = br.readLine().split(" ").map { it.toInt() }
if (a == 0 && b == 0) break
var result = "neither"
if (a < b && b % a == 0) {
result = "factor"
} else if (a > b && a % b == 0) {
result = "multiple"
} else {
result = "neither"
}
println(result)
}
}
728x90
'알고리즘 > 약수, 배수와 소수 단계' 카테고리의 다른 글
[백준][2501] 약수 구하기 (0) | 2024.04.26 |
---|