반응형

문제 출처 :


https://www.acmicpc.net/problem/2501



알고리즘 분석 :


문제 해결에 필요한 사항

1. 약수를 구하는 방식, 생각


1) n % i 가 0으로 나누어 떨어지는지 확인하고 나누어 떨어진다면 arr[i]는 1, 그렇지 않다면 0을 넣어준다.


2) i = 1부터 n까지 하나씩 증가하며 조사를 하게되는데 arr[i]가 1이면 즉, 약수이면 k를 -1을 해주고, 

k가 0일때 출력을 하고 break해준다.


3) for문을 진행했는데도 k가 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
28
29
30
31
32
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
{
    int n, k;
    int arr[10001];
    scanf("%d %d"&n, &k);
 
    for (int i = 1; i <= n; i++)
        n % i == ? arr[i] = : arr[i] = 0;
 
    for (int i = 1; i <= n; i++)
    {
        if (arr[i] == 1)
        {
            k--;
            if (k == 0)
            {
                printf("%d", i);
                break;
            }
        }
    }
    if (k != 0)
        printf("0");
    return 0;
}
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus


반응형

'Applied > 알고리즘 문제풀이' 카테고리의 다른 글

[10866번] 덱  (0) 2016.12.29
[2217번] 로프  (0) 2016.12.22
[1977번] 완전 제곱수  (0) 2016.12.22
[10867번] 중복 빼고 정렬하기  (0) 2016.12.21
[13701번] 중복 제거  (0) 2016.11.22