min ~ max에 i^2 의 배수가 몇개 있는지를 찾는다.
그리고 있으면 count에 더해준다.
if(duplicatedValue[i] == 1) continue;
이 경우는 n의 m승 이미 계산된거.
else if(duplicatedValue[i] > 1) duplicatedValue[j]--;
이 경우는 i 가 6인경우로 예를 들 수 있다.
i가 6이면 2와 3에서 증가된다.
6의 배수들을 1로 변경해주고,
count -= (max / (i * i) - (min - 1) / (i * i)) * (duplicatedValue[i] - 1);
이 코드에서 6의 배수들이 중복으로 계산됐던걸 빼준다.
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 2294 동전 2 풀이 (0) | 2017.12.07 |
---|---|
BOJ 백준온라인져지 11047 동전 0 풀이 (0) | 2017.12.07 |
BOJ 백준온라인져지 6588 골드바흐의 추측 풀이 (0) | 2017.12.06 |
BOJ 백준온라인져지 2960 에라토스테네스의 체 풀이 (0) | 2017.12.06 |
BOJ 백준온라인져지 2490 윷놀이 풀이 (0) | 2017.12.05 |