728x90

문제

4 × 3 = 12이다.

이 식을 통해 다음과 같은 사실을 알 수 있다.

3은 12의 약수이고, 12는 3의 배수이다.

4도 12의 약수이고, 12는 4의 배수이다.

두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.

  1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
  2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
  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

 

5086번: 배수와 약수

각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

www.acmicpc.net

 


 

문제 해결 방법

  • % 연산자를 이용하여 간단하게 풀었다.
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

'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