P5190 [COCI 2009/2010 #5] PROGRAM
题目描述
译自 COCI 2010.03.06 T5「PROGRAM」
开始时, s e q \mathit{seq} seq 数组已清零。请注意 s e q \mathit{seq} seq 数组的第一个元素的下标是 0 而非 1。
void something (int jump) {
for (int i = 0; i < N; i += jump)
++seq[i];
}
Mirko 调用了 s o m e t h i n g \tt something something 函数 K K K 次,第 i i i 次调用时 j u m p = X i \tt jump= \it X_i jump=Xi。
接下来有 Q Q Q 次查询,每次查询包含两个整数 L i , L_i, Li, R i R_i Ri,对于每组查询请输出 ∑ i = L i R i s e q i \displaystyle\sum_{i=L_i}^{R_i}\mathit{seq}_i i=Li∑Riseqi。
输入格式
第一行:
N
,
K
N,K
N,K。
接下来一行
K
K
K 个整数,第
i
i
i 个为
X
i
X_i
Xi。
第
N
+
2
N+2
N+2 行:
Q
Q
Q。
接下来
Q
Q
Q 行:每行两个整数
L
i
,
L_i,
Li,
R
i
R_i
Ri。
输出格式
共 Q Q Q 行,第 i i i 行包含第 i i i 组查询的答案。
输入输出样例 #1
输入 #1
10 4
1 1 2 1
3
0 9
2 6
7 7
输出 #1
35
18
3
输入输出样例 #2
输入 #2
11 3
3 7 10
3
0 10
2 6
7 7
输出 #2
8
2
1
输入输出样例 #3
输入 #3
1000000 6
12 3 21 436 2 19
2
12 16124
692 29021
输出 #3
16422
28874
说明/提示
样例说明 1
s e q = { 4 , 3 , 4 , 3 , 4 , 3 , 4 , 3 , 4 , 3 } seq=\{4, 3, 4, 3, 4, 3, 4, 3, 4, 3\} seq={4,3,4,3,4,3,4,3,4,3}
样例说明 2
s e q = { 3 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 1 } seq=\{3, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1\} seq={3,0,0,1,0,0,1,1,0,1,1}
数据范围与提示
1 ≤ N , K , Q ≤ 10 6 , 1≤N,K,Q≤10^6, 1≤N,K,Q≤106, 1 ≤ X i < N , 1≤X_i<N, 1≤Xi<N, 0 ≤ L i ≤ R i < N 0≤L_i≤R_i<N 0≤Li≤Ri<N.
C++实现
#include <iostream>
#define ll long long
using namespace std;
const int N = 1e6 + 10;
int n, k, q;
ll x[N], tong[N];
ll sum[N];
ll seq[N];
int main() {
cin >> n >> k;
for (int i = 0; i < k; i ++) {
cin >> x[i];
tong[x[i]] ++;
}
for (int i = 0; i < n; i ++) {
if (tong[i]) {
for (int j = 0; j < n; j += i)
seq[j] += tong[i];
}
}
sum[0] = seq[0];
for (int i = 1; i < n; i ++)
sum[i] = sum[i - 1] + seq[i];
cin >> q;
for (int i = 0, l, r; i < q; i ++) {
cin >> l >> r;
cout << sum[r] - sum[l - 1] << endl;
}
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++实现信奥 P5190 COCI 20092010 #5 PROGRAM&spm=1001.2101.3001.5002&articleId=148504529&d=1&t=3&u=6ea6b1320e0b4b8da032b5ae0157660b)
557

被折叠的 条评论
为什么被折叠?



