PS/Baekjoon Online Judge

[백준 11690] LCM(1, 2, ..., n) [C]

kimyoungrok 2021. 8. 30. 18:51

백준 - 11690


풀이

N이하 소수들의 가장 큰 거듭제곱들을 곱하고, 2^32로 나눈 나머지를 출력해주면 된다.


소스코드

#include <stdio.h>
#include <stdbool.h>
#define MAX 100000001
bool cNum[MAX];
int main(){
    for (int i = 2; i*i < MAX; i++)
        if (!cNum[i])
            for (int j = 2*i; j < MAX; j += i)
                cNum[j] = true;
				
    int n;
    scanf("%d", &n);
    long long result = 1;
    for (int i = 2; i < MAX; i++)
        if (!cNum[i]){
            long long temp = 1;
            while (temp*i <= n) temp *= i;
            result = result*temp %4294967296;
        }
    printf("%lld", result);
}

출처

 

11690번: LCM(1, 2, ..., n)

첫째 줄에 1보다 크거나 같고, n보다 작거나 같은 모든 자연수의 최소공배수를 출력한다. 정답이 매우 커질 수 있기 때문에, 232로 나눈 나머지를 출력한다.

www.acmicpc.net

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 11790] Primorial vs LCM [C]  (0) 2021.08.31
[백준 11414] LCM [C]  (0) 2021.08.31
[백준 2904] 수학은 너무 쉬워 [C]  (0) 2021.08.30
[백준 19577] 수학은 재밌어 [C]  (0) 2021.08.30
[백준 5615] 아파트 임대 [C]  (0) 2021.08.29