1. 문제 상세
https://www.acmicpc.net/problem/2501
2. 문제 접근
for문을 사용하여 자연수 N 을 1부터 N 까지의 숫자로 나누어 가면서 나머지가 0인 경우에 카운트를 증가시킨다.
이렇게 약수를 구하며 카운트를 증가시키다가 입력받은 K 의 값과 같아지면 반복을 빠져나오고, 해당 수를 출력한다.
만약 N 까지의 수를 모두 나누어도 카운트가 K 와 같아지지 않았다면 0을 출력한다.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int n, k, i, count = 0;
cin >> n >> k;
for(i = 1; i <= n; i++) {
if(n % i == 0) count++;
if(count == k) break;
}
if(count != k) i = 0;
cout << i;
}
정수형 변수 n, k, i, count 를 선언하고 count 를 0으로 초기화한다.
cin 으로 두 정수를 입력받아 각각 n 과 k 에 저장한다.
for문으로 i 가 1부터 n 보다 작거나 같을 때 1씩 더하며 반복하도록 한다.
if문으로 n 을 i 로 나눈 나머지가 0이라면 count 의 값을 1 증가시킨다.
if문으로 count 의 값이 k 의 값과 같으면 break 로 반복을 빠져나온다.
반복을 빠져나오면 if문으로 count 가 k 와 다른 경우 i 의 값에 0을 저장한다.
cout 으로 i 를 출력한다.
4. 성능 확인
5. 마무리
.
'백준 - 단계별로 풀어보기 > 약수, 배수와 소수' 카테고리의 다른 글
[백준] 11653번 : 소인수분해 | C++ (0) | 2023.10.19 |
---|---|
[백준] 2581번 : 소수 | C++ (1) | 2023.10.19 |
[백준] 1978번 : 소수 찾기 | C++ (0) | 2023.10.19 |
[백준] 9506번 : 약수들의 합 | C++ (0) | 2023.10.19 |
[백준] 5086번 : 배수와 약수 | C++ (0) | 2023.10.19 |