Submit | All submissions | Best solutions | Back to list |
CNTPRIME - Counting Primes |
Tortoise and Achilles are playing the Counting the Primes game. Achilles will give Tortoise some numbers, and some intervals, and then Tortoise needs to count the primes on those intervals. It is an easy game, but Tortoise is doing the counting slowly. Achilles is pissed off, so he has given you the task as you are a good programmer. For a twist, he has changed the game a little bit, that is he will give some intervals for counting the prime as well as he will give some intervals to change the numbers in that interval.
You are given an array of n elements. After that you will be given M commands. They are:
- 0 x y v - you have to change all numbers in the range of x to y (inclusive) to v, where x and y are two indexes of the array.
- 1 x y - output a line containing a single integer which is the number of primes between x and y (inclusive).
The array is indexed from 1 to n.
Input
Input starts with an integer T (≤ 10), denoting the number of test cases.
Each case contains two integers n (1 ≤ n ≤ 104) and q (1 ≤ q ≤ 2×104). Then next line, you will be given N integers. After that each of the next q lines will contain a task in one of the following form:
- 0 x y v (1 ≤ x ≤ y ≤ n, 2 ≤ v ≤ 106)
- 1 x y (1 ≤ x ≤ y ≤ n)
And the numbers will be in range of [2, 106].
Output
For each case, print the case number first. Then for each query '1 x y', print the number of primes between x and y [inclusively].
Example
Input: 1 5 3 78 2 13 12 3 1 1 2 0 4 4 5 1 1 5 Output: Case 1: 1 4
Note:
- Use Faster IO like scanf, printf
- A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself. The first prime numbers are 2, 3, 5, 7, 11 ...
Added by: | Faiyaz |
Date: | 2012-12-16 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 |
Resource: | Own Problem |
hide comments
|
||||||||
2014-06-24 22:37:01 Aayush Agarwal
After this try this problem : http://www.spoj.com/problems/PRMQUER/ |
||||||||
2014-05-12 13:56:12 DEVANSH PARASHAR
tle plz any tutorial plz help |
||||||||
2013-12-19 16:11:16 abdou_93
finally AC after 9 WA: :) |
||||||||
2013-12-19 16:11:16 sriankit
Lazy propagation gives TLE in java.. :( |
||||||||
2013-12-19 16:11:16 (Tjandra Satria Gunawan)(曾毅昆)
@akb: I didn't use segment tree to solve this problem, so I don't know. But, I know that the constraints is correct (no case with n>10^4). |
||||||||
2013-12-19 16:11:16 akb
someone please explain me why segtree size 6*10^4 is giving WA but 10^5 is AC. Re: Maybe because of the way you are building the tree. My code passes with 4*10^4 tree size. :) Last edit: 2013-02-26 08:17:23 |
||||||||
2013-12-19 16:11:16 mehmetin
Lazy Prop. with optimized IO passes Last edit: 2012-12-23 22:59:23 |
||||||||
2013-12-19 16:11:16 (Tjandra Satria Gunawan)(曾毅昆)
@Mehmet Inal: You need an efficient data structure to solve this problem. |
||||||||
2013-12-19 16:11:16 mehmetin
Should we use lazy propagation? Last edit: 2012-12-23 13:26:44 |
||||||||
2013-12-19 16:11:16 npsabari
Segment Tree with 3*10^4 nodes gave WA. but with 4*10^4 nodes gave AC. But as n <= 10^4 the first one should have got AC.. So be careful while choosing the array sizes |