728x90
반응형
브론즈Ⅲ
https://www.acmicpc.net/problem/5086
풀이 방법
-첫 번째 숫자가 두 번째 숫자의 약수일 경우 두 번째 숫자를 첫 번째 숫자로 나눈 나머지가 0이 될 것이다.
-첫 번째 숫자가 두 번째 숫자의 배수일 경우 첫 번째 숫자를 두 번째 숫자로 나눈 나머지가 0이 될 것이다.
위의 두가지 사실을 이용해 문제를 풀 수 있다.
내 코드
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#pragma warning(disable:4996)
#include <stdio.h>
int main(void) {
int n1, n2;
while (1) {
scanf("%d %d", &n1, &n2);
if (n1 == 0 && n2 == 0)
return 0;
//약수일때
if (n2 % n1 == 0)
printf("factor\n");
//배수일때
else if (n1 % n2 == 0)
printf("multiple\n");
//약수x, 배수x 일때
else
printf("neither\n");
}
return 0;
}
|
cs |
코드설명
1 | scanf 함수를 사용할 때 경고창을 띄우지 않도록 하는 전처리 지시문이다.
2 | scanf, printf 함수를 사용하기 위한 전처리 지시문이다.
8~11 | 첫 번째 수와 두 번째 수가 모두 0을 입력받을 때까지 첫 번째 수와 두 번째 수를 입력받아야 하므로, while문을 무한반복 시키고, 첫 번째 수와 두 번째 수가 모두 0을 입력 받았을 때 프로그램을 종료하도록 하는 코드이다.
13~15 | '첫 번째 숫자가 두 번째 숫자의 약수일 경우 두 번째 숫자를 첫 번째 숫자로 나눈 나머지가 0이 될 것이다.' 다음 규칙을 적용한 코드이다.
16~18 | '첫 번째 숫자가 두 번째 숫자의 배수일 경우 첫 번째 숫자를 두 번째 숫자로 나눈 나머지가 0이 될 것이다.' 다음 규칙을 적용한 코드이다.
20~21 | 첫 번째 숫자와 두 번째 숫자의 관계가 약수도 배수도 아닐 때, "neither"을 출력하기 위한 코드이다.
느낀점
- 초등학교 수준의 '약수'와 '배수'의 개념과 산술연산자 '%'만 안다면 쉽게 풀 수 있는 문제인 것 같다.
728x90
반응형
'백준 알고리즘 단계별로 풀어보기 > 약수, 배수와 소수' 카테고리의 다른 글
백준 알고리즘 11653번 소인수분해 (C언어) (1) | 2023.03.10 |
---|---|
백준 알고리즘 2581번 소수 (C언어) (0) | 2023.03.08 |
백준 알고리즘 1978번 소수 찾기 (C언어) (1) | 2023.03.06 |
백준 9506번 약수들의 합 (C언어) (0) | 2023.03.05 |
백준 알고리즘 2501번 약수 구하기 (C언어) (0) | 2023.03.03 |