#1535
Platinum V

소수 클러스터

시간 제한
2s
메모리 제한
512MB
제출
46
정답
12
맞힌 사람
8
정답 비율
22.9%

문제

양의 정수 xx와 소수 pp에 대하여, vp(x)v_p(x)를 xx를 pp로 연속해서 나눌 수 있는 횟수라고 하자. 즉, pkp^k가 xx를 나누어떨어지게 하는 음이 아닌 정수 kk의 최댓값이다.

예를 들어 72=23⋅3272 = 2^3 \cdot 3^2이므로 v2(72)=3v_2(72)=3이고 v3(72)=2v_3(72)=2이다.

길이가 NN인 양의 정수 수열 a1,a2,…,aNa_1, a_2, \ldots, a_N과 QQ개의 쿼리가 주어진다. 각 쿼리에는 구간의 양 끝 ll, rr과 소수 pp가 주어지며, 구간에 있는 수들을 소인수분해 했을 때 pp가 등장하는 지수의 합을 구해야 한다. 즉, 각 쿼리에 대해 다음 값을 구해 보자.

∑i=lrvp(ai)\sum_{i=l}^{r} v_p(a_i)

입력

첫째 줄에 수열의 길이 NN과 쿼리의 수 QQ가 공백으로 구분되어 주어진다. (1≤N≤4,000,000;1≤Q≤1,000,000)(1 \le N \le 4,000,000; 1 \le Q \le 1,000,000)

둘째 줄에 NN개의 양의 정수 a1,a2,…,aNa_1, a_2, \ldots, a_N이 공백으로 구분되어 주어진다. (1≤ai≤1,000,000)(1 \le a_i \le 1,000,000)

다음 QQ개의 줄 중 jj번째 줄에는 jj번째 쿼리를 나타내는 세 정수 ljl_j, rjr_j, pjp_j가 공백으로 구분되어 주어진다. (1≤lj≤rj≤N;pj≤1,000,000)(1 \le l_j \le r_j \le N; p_j \le 1,000,000)

각 pjp_j는 소수이다.

출력

QQ개의 줄에 각 쿼리의 답을 입력으로 주어진 순서대로 한 줄에 하나씩 출력한다.

예제 1

5 4
12 18 20 7 72
1 5 2
2 5 3
1 3 2
4 5 7

출력 1

8
4
5
1
문제를 만든 사람
황현석
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출

제출 내역이 없습니다.

맞은 사람
#순위사용자언어시간메모리코드 길이
10315🥇
황현석
C++170ms78224KB1173B
10595🥈
Kokiri is cute
C++607ms182296KB1101B
10759🥉
스피드런도 런이다
C++791ms443404KB2294B
110134
jwpassion1
C++842ms393572KB997B
105985
cpp = competitive python programming
C++964ms393104KB997B
109846
서재형
C++1607ms473436KB1575B
108967
실외기선풍기세탁기
Java1666ms413460KB2486B
106348
SW-IT Contest는 충남대학교 컴퓨터인공지능학부 알고리즘 동아리 ANA에서 주최하는 프로그래밍 대회로, 팀으로 출전하여 알고리즘 문제를 해결하는 대회입니다.
C++1782ms280512KB1602B
난이도 투표
Platinum V2명 투표· 17일 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
11013
맞았습니다
C++842ms393572KB997B2026. 10. 08. 04:01
10984
맞았습니다
C++1607ms473436KB1575B2026. 10. 06. 15:47
10983
런타임 에러
C++--1478B2026. 10. 06. 15:46
10982
메모리 초과
C++--1486B2026. 10. 06. 15:43
10981
시간 초과
C++--1825B2026. 10. 06. 15:23