CodeForces 385C Bear and Prime Numbers
2016-07-12 10:00
453 查看
C. Bear and Prime Numbers
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output
Recently, the bear started studying data structures and faced the following problem.
You are given a sequence of integers x1, x2, ..., xn
of length n and m queries, each of them is characterized by two integers
li, ri. Let's introduce
f(p) to represent the number of such indexes
k, that xk is divisible by
p. The answer to the query
li, ri is the sum:
, where
S(li, ri) is a set of prime numbers from segment
[li, ri] (both borders are included in the segment).
Help the bear cope with the problem.
Input
The first line contains integer n
(1 ≤ n ≤ 106). The second line contains
n integers x1, x2, ..., xn
(2 ≤ xi ≤ 107). The numbers are not necessarily distinct.
The third line contains integer m
(1 ≤ m ≤ 50000). Each of the following m lines contains a pair of space-separated integers,
li and
ri
(2 ≤ li ≤ ri ≤ 2·109)
— the numbers that characterize the current query.
Output
Print m integers — the answers to the queries on the order the queries appear in the input.
Examples
Input
Output
Input
Output
Note
Consider the first sample. Overall, the first sample has 3 queries.
The first query l = 2,
r = 11 comes. You need to count f(2) + f(3) + f(5) + f(7) + f(11) = 2 + 1 + 4 + 2 + 0 = 9.
The second query comes l = 3,
r = 12. You need to count f(3) + f(5) + f(7) + f(11) = 1 + 4 + 2 + 0 = 7.
The third query comes l = 4,
r = 4. As this interval has no prime numbers, then the sum equals 0.
题意:给定n个数,然后询问一个区间内的所有素数能整出这n个数的个数的和。
思路:用埃氏筛法的思路,先预处理(1-m)这个区间内的答案。具体方法见代码。
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output
Recently, the bear started studying data structures and faced the following problem.
You are given a sequence of integers x1, x2, ..., xn
of length n and m queries, each of them is characterized by two integers
li, ri. Let's introduce
f(p) to represent the number of such indexes
k, that xk is divisible by
p. The answer to the query
li, ri is the sum:
, where
S(li, ri) is a set of prime numbers from segment
[li, ri] (both borders are included in the segment).
Help the bear cope with the problem.
Input
The first line contains integer n
(1 ≤ n ≤ 106). The second line contains
n integers x1, x2, ..., xn
(2 ≤ xi ≤ 107). The numbers are not necessarily distinct.
The third line contains integer m
(1 ≤ m ≤ 50000). Each of the following m lines contains a pair of space-separated integers,
li and
ri
(2 ≤ li ≤ ri ≤ 2·109)
— the numbers that characterize the current query.
Output
Print m integers — the answers to the queries on the order the queries appear in the input.
Examples
Input
6 5 5 7 10 14 15 3 2 11 3 12 4 4
Output
9 7 0
Input
7 2 3 5 7 11 4 8 2 8 10 2 123
Output
0 7
Note
Consider the first sample. Overall, the first sample has 3 queries.
The first query l = 2,
r = 11 comes. You need to count f(2) + f(3) + f(5) + f(7) + f(11) = 2 + 1 + 4 + 2 + 0 = 9.
The second query comes l = 3,
r = 12. You need to count f(3) + f(5) + f(7) + f(11) = 1 + 4 + 2 + 0 = 7.
The third query comes l = 4,
r = 4. As this interval has no prime numbers, then the sum equals 0.
题意:给定n个数,然后询问一个区间内的所有素数能整出这n个数的个数的和。
思路:用埃氏筛法的思路,先预处理(1-m)这个区间内的答案。具体方法见代码。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 1e7; bool is_prime[N + 1]; int x[N + 1]; int quest[N + 1]; void sieve() { //预处理 for(int i = 2; i <= N; ++i) { if(!is_prime[i]) { for(int j = i; j <= N; j += i) { quest[i] += x[j]; is_prime[j] = true; } } } for(int i = 1; i <= N; ++i) quest[i] += quest[i - 1]; } int main() { int n, q, l, r, temp; scanf("%d", &n); for(int i = 1; i <= n; ++i) { scanf("%d", &temp); x[temp]++; } sieve(); scanf("%d", &q); for(int i = 1; i <= q; ++i) { scanf("%d%d", &r, &l); if(r >= N) r = N; if(l >= N) l = N - 1; printf("%d\n", quest[l] - quest[r - 1]); //查询 } return 0; }
相关文章推荐
- 埃氏筛法之素数
- 埃氏筛选素数及其变形
- 筛法,埃氏筛法 Eular筛法
- 【唯一分解定理】Sphenic numbers Gym - 101243G
- Irrelevant Elements UVA - 1635
- 快速求素数表——埃氏筛法与欧拉筛法
- uva 10006 素数打表+幂取模(反复平方法)(O(logn))
- 埃氏筛法
- 埃拉托斯特尼筛法_埃氏筛法求素数
- 论旧时豪门与寒门
- Tomcat反复加载Spring配置文件
- java spring mvc视频教程及项目源码之spring mvc入门到精通
- listview设置条目点击的时候不变色(让状态选择器不起作用)
- Jquery表单验证
- 文本框获取焦点时禁止手机弹出自带的输入键盘
- 就让我们,晚点在一起。然后一辈子。
- 使用ViewPager实现自动轮播
- 李洪强iOS之Foundation框架—字符串
- sublime text3自动同步左边栏颜色背景为编辑栏颜色
- Linux中线程与CPU核的绑定