[LOJ6235]区间素数个数】的更多相关文章

题目大意: 给定$n(n\leq10^{11})$,求$\pi(n)$. 思路: 计算$\pi$函数有$O(n^{\frac23})$的Lehmer算法,这里考虑$O(\frac{n^{\frac34}}{\ln n})$的洲阁筛. 我们可以将答案分为$\leq\sqrt n$的质数个数和$>\sqrt n$的质数个数. 其中$\leq\sqrt n$的质数个数可以线性筛预处理,而$>\sqrt n$的质数个数相当于用$\leq\sqrt n$的质数筛这$n$个数后剩下的数的个数. 若用$f[…
题目链接:LOJ 题目大意:看到题目名字应该都知道是啥了吧. $1\le N\le 10^{11}$. 阉割版 min_25 筛.发现答案实际上就是 min_25 筛中 $g(N,pl)$ 的值.(取次数 $k=0$ 即可) 在这里再写一遍式子.(用久了应该要背了) $g(n,0)=n-1$ $g(n,j)=\begin{cases}g(n,j-1)&p_j^2>n\\g(n,j-1)-(g(\lfloor\dfrac{n}{p_j}\rfloor,j)-(j-1))&p_j^2\l…
#6235. 区间素数个数 题目描述 求 1∼n 1\sim n1∼n 之间素数个数. 输入格式 一行一个数 n nn . 输出格式 一行一个数,表示答案. 样例 样例输入 10 样例输出 4 样例解释 1 2,3,5,72,3,5,72,3,5,7 数据范围与提示 对于 100% 100\%100% 的数据,2≤n≤1011 2 \leq n \leq 10^{11}2≤n≤10​11​​. #include<iostream> #include<cstdio> #include…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b (1 ≤ a ≤ b < 231, b - a ≤ 100000). 由于a和b较大,我们可以筛选所有[2, √b)内的素数,然后同时去筛选掉在区间[a, b)的数,用IsPrime[i-a] = 1表示i是素数: ///LightOj1197求区间素数的个数; #include<stdio.h&g…
题目链接 \(Description\) 给定\(n\),求\(1\sim n\)中的素数个数. \(2\leq n\leq10^{11}\). \(Solution\) Min_25筛.只需要求出\(g(n,|P|)\). 跑的好慢啊QAQ //5283ms 11.62M #include <cmath> #include <cstdio> #include <algorithm> typedef long long LL; const int N=317000<…
\(\color{#0066ff}{ 题目描述 }\) 求 \(1\sim n\) 之间素数个数. \(\color{#0066ff}{输入格式}\) 一行一个数 n . \(\color{#0066ff}{输出格式}\) 一行一个数,表示答案. \(\color{#0066ff}{输入样例}\) 10 \(\color{#0066ff}{输出样例}\) 4 \(\color{#0066ff}{数据范围与提示}\) 对于 \(100\%\) 的数据,\(2 \leq n \leq 10^{11}…
题意 题目链接 Sol min25筛的板子题,直接筛出\(g(N, \infty)\)即可 筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉 #include<bits/stdc++.h> #define LL long long //#define int long long using namespace std; const int MAXN = 2e6 + 10; int Lim, vis[MAXN], prime[MAXN], tot;…
http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605…
这道题的L和R都很大,所以如果直接开一个1~R的数组明显会超时.但是R-L并不大,所以我们考虑把这个区间(L--R)移动到(1--(R-L+1))这个区间再开数组(就是把每个数减L再加1).接下来先用埃氏筛分(可以自行百度)求出[2,√R]区间的素数,并存在prime数组里.对于prime数组里的每一个质数,求出其在区间(L--R)的倍数并且标记成false(非素数).那么剩下的区间(L--R)里的数就都是素数咯~然后相邻的比较,求出差最大的和差最小的即可. 注意的细节:1.判断素数的数组(pr…
题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前进行打表和保存区间素数个数,每次给出a.b直接输出答案就行. #include<stdio.h> #include<string.h> #include<iostream> using namespace std; //const int N=40*40+40+41; ;…
题目连接:http://www.spoj.com/problems/CNTPRIME/ #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #define lson rt<<1,L,mid #define rson rt<<1|1,mid+1,R /* 水题 题意:给出n个初始值,给出两种操作 0 x y v:将[x,y]的数改…
/** 题目:Help Hanzo lightof 1197 链接:https://vjudge.net/contest/154246#problem/M 题意:求一段区间内素数个数,[l,r] 在 [1,1e9] 范围内.r-l<=1e5; 思路:采用和平常筛素数的方法.平移区间即可. */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #i…
题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line 输入输出样例 输入样例#1: 复制 2 5 1 3 2 6 输出样例#1: 复制 2 Crossing the line 说明 [数据范围和约定] 对于20%的数据 1<=n<=10 1<=m<=10 对于100%的数据 1<=n<=1000 1…
POJ 3978 Primes(求范围素数个数) id=3978">http://poj.org/problem? id=3978 题意: 给你一个区间范围A和B,要你求出[A,B]内的素数个数.当中B<=100000. 分析: 首先我们求出2到10W的素数表.把每一个素数按从小到大的顺序保存在prime数组中.然后我们用二分查找找到A的下界和B的上界,然后用上界-下界即为素数个数. 程序实现用了两种筛选法来求素数表.两种筛选法都是基于每一个自然合数都能够分解为:最小素因子p*剩余部…
http://lightoj.com/volume_showproblem.php?problem=1197 题目大意: 就是给你一个区间[a,b]让你求这个区间素数的个数 但a.b的值太大没法直接进行素数筛选(没法开那么大的数组),我们可以将a当做0,将b当做b-a 这样求[a,b]之间就变成了求[0, b - a]之间,这样就可以开数组来筛选 下图是代码式子j = j + prime[i] - a % prime[i]的由来 #include<stdio.h> #include<ma…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6069 题意: 给出 l, r, k.求:(lambda d(i^k))mod998244353,其中 l <= i <= r, d(i) 为 i 的因子个数. 思路:若 x 分解成质因子乘积的形式为 x = p1^a1 * p2^a2 * ... * pn^an,那么 d(x) = (a1 + 1) * (a2 + 1) * ... * (an + 1) .显然 d(x^k) = (a1 * k…
 时间限制: 8 s  空间限制: 256000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 小明喜欢研究素数,他想统计两个自然数之间的素数个数,现在他给定一个区间,请你帮忙求出这个区间的素数个数. 输入描述 Input Description 两个数a和b,表示开区间[a,b] 输出描述 Output Description 输出一个数,表示区间素数的个数 样例输入 Sample Input 2 100 样例输出 Sample Output 2…
题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line 输入输出样例 输入样例#1: 2 5 1 3 2 6 输出样例#1: 2 Crossing the line 说明 [数据范围和约定] 对于20%的数据 1<=n<=10 1<=m<=10 对于100…
题目链接:pid=5317" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5317 Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more interesting things about GCD. Today He comes up with…
题意: 给定一个区间a,b,a-b>=100000,1<=a<=b<=231,求出给定a,b区间内的素数的个数 区间素数筛 (a+i-1)/ ii向上取整,当a为 i 的整数倍时,直接从a开始标记,当a不是 i 的整数倍时,得出 i 的整数倍且大于a,如果a小于等于 i 时,从2i开始标记 for(ll i=2;i*i<b;++i) { if(is_prime_small[i]) { for(ll j=2*i;j*j<b;j+=i) { is_prime_small[j…
要求: (1) 找出0-1000之间素数(2) 设f(n)表示0-n之间的素数个数,计算出当n=0,1,2,3,.....,997时f(n)的值,并写入文件 分析: 首先找素数使用一个效率较高的方法--Eratosthenes筛法,只要把1和不超过1000的正合数都删去.其原理为:由于正合数必有不可约数是小于等于其平方根的,只要首先求出1-1000平方根之间的全部不可约数,依次把这些不可约数之外的倍数也全部删去,剩下的正好就是不可约数.(参考<初等数论>) 其程序如下: /** * @para…
肯定先无脑树链剖分,然后线段树维护一段区间不同个数,再维护一个左右端点的费用. 线段树更新,pushDown,pushUp的时候要注意考虑链接位置的费用是否相同 还有就是树链剖分操作的时候,维护上一个更新的位置的费用. 总之就是出现区间合并,就考虑总数是否要减一 好想不好写 //场上根本写不完啊 /*--------------------------------------------------------------------------------------*/ #include <…
题意:给一个数n,返回小于n的素数个数. 思路:设数字 k =from 2 to sqrt(n),那么对于每个k,从k2开始,在[2,n)范围内只要是k的倍数的都删掉(也就是说[k,k2)是不用理的,若能被筛掉早就被筛了,保留下来的就是素数).最后统计一下[2,n)内有多少个还存在的,都是素数. 要注意,如果k已经被筛掉了,那么不用再用它来删别人了,因为已经被筛掉,那么现在比k2大的且是k的倍数,都已经被干掉了. class Solution { public: int countPrimes(…
素数个数的位数 Time Limit 1000ms Memory Limit 65536K description 小明是一个聪明的孩子,对数论有着非常浓烈的兴趣.他发现求1到正整数10n 之间有多少个素数是一个非常难的问题,该问题的难以决定于n 值的大小.如今的问题是,告诉你n的值,让你帮助小明计算小于10n的素数的个数值共同拥有多少位? input 输入数据有若干组,每组数据包括1个整数n(1 < n < 1000000000),若遇到EOF则处理结束. output 相应每组数据,将小于…
A:判决素数个数 总时间限制:  1000ms 内存限制:  65536kB 描述 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y). 输入 两个整数X和Y(1 <= X,Y <= 105). 输出 输出一个整数,表示X,Y之间的素数个数(包括X和Y). 样例输入 1 100 样例输出 25代码: /*****************/ //NAME:ChengtaoGuo //DATE:2017-08-02 //SOURCE:BAILIANOJ /****************/…
本文是对 LeetCode Count Primes 解法的探讨. 题目: Count the number of prime numbers less than a non-negative number, n. 尽管题目并没有要我们写一个最优的算法,但是身为一个程序员,优化应该是一种习惯,在编程的过程中,随着思考进行优化.只要求我们满足给定的时间和空间即可. 如果你只能想出一个最简单的方法,难道你会有什么竞争力吗? 穷举 最开始我用的就是这个方法,可以说这是最简单的一种方法了,而且最开始,我…
D. Powerful array time limit per test seconds memory limit per test megabytes input standard input output standard output An array of positive integers a1, a2, ..., an ..., ar,  ≤ l ≤ r ≤ n. For every positive integer s denote by Ks the number of occ…
Description 小明是一个聪明的孩子,对数论有着很浓烈的兴趣. 他发现求1到正整数10n 之间有多少个素数是一个很难的问题,该问题的难以决定于n 值的大小. 现在的问题是,告诉你n的值,让你帮助小明计算小于10n的素数的个数值共有多少位? Input 输入数据有若干组,每组数据包含1个整数n(1 < n < 1000000000),若遇到EOF则处理结束. Output 对应每组数据,将小于10n 的素数的个数值的位数在一行内输出,格式见样本输出.同组数据的输出,其每个尾数之间空一格,…
题目大意: 给出T个实例,T<=200,给出[a,b]区间,问这个区间里面有多少个素数?(1 ≤ a ≤ b < 231, b - a ≤ 100000) 解题思路: 由于a,b的取值范围比较大,无法把这个区间内的所以素数全部筛选出来,但是b-a这个区间比较小,所以可以用区间素数筛选的办法解决这个题目. 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorith…
P3912 素数个数 题目描述 求1,2,\cdots,N1,2,⋯,N 中素数的个数. 输入输出格式 输入格式: 1 个整数NN. 输出格式: 1 个整数,表示素数的个数. 输入输出样例 输入样例#1: 复制 10 输出样例#1: 复制 4 说明 • 对于40% 的数据,1 \le N \le 10^61≤N≤106: • 对于80% 的数据,1 \le N \le 10^71≤N≤107: • 对于100% 的数据,1 \le N \le 10^81≤N≤108. 思路:RE,线性筛一边就可…