728x90
728x90
문제
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
출처
ICPC > Regionals > South Pacific > South Pacific Region > New Zealand Programming Contest > NZPC 2011 A번
알고리즘 분류
- 수학
- 사칙연산
문제 출처
https://www.acmicpc.net/problem/5086
문제 해결 방법
- % 연산자를 이용하여 간단하게 풀었다.
bool isFactor(int n1, int n2) {
if (n2 % n1 == 0) {
return true;
}
return false;
}
bool isMultiple(int n1, int n2) {
if (n1 % n2 == 0) {
return true;
}
return false;
}
코드
#include <iostream>
using namespace std;
int num1, num2;
bool isFactor(int n1, int n2) {
if (n2 % n1 == 0) {
return true;
}
return false;
}
bool isMultiple(int n1, int n2) {
if (n1 % n2 == 0) {
return true;
}
return false;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
while (1) {
cin >> num1 >> num2;
if (num1 == 0 && num2 == 0) {
break;
}
if (isFactor(num1, num2)) {
cout << "factor" << '\n';
}
else if (isMultiple(num1, num2)) {
cout << "multiple" << '\n';
}
else {
cout << "neither" << '\n';
}
}
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [정수론 및 조합론]
- 브론즈III
728x90
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-2981][C++] 검문 (0) | 2022.11.13 |
---|---|
[BOJ-1934][C++] 최소공배수 (0) | 2022.11.13 |
[BOJ-2609][C++] 최대공약수와 최소공배수 (0) | 2022.11.13 |
[BOJ-1037][C++] 약수 (0) | 2022.11.12 |
[BOJ-1004][C++] 어린 왕자 (0) | 2022.11.12 |
[BOJ-1002][C++] 터렛 (0) | 2022.11.10 |
[BOJ-3053][C++] 택시 기하학 (0) | 2022.11.10 |
[BOJ-2477][C++] 참외밭 (0) | 2022.11.10 |