\(\color{#0066ff}{ 题目描述 }\)

求 \(1\sim n\) 之间素数个数。

\(\color{#0066ff}{输入格式}\)

一行一个数 n 。

\(\color{#0066ff}{输出格式}\)

一行一个数,表示答案。

\(\color{#0066ff}{输入样例}\)

  1. 10

\(\color{#0066ff}{输出样例}\)

  1. 4

\(\color{#0066ff}{数据范围与提示}\)

对于 \(100\%\) 的数据,\(2 \leq n \leq 10^{11}\)。

\(\color{#0066ff}{ 题解 }\)

这TM是min_12.5筛吧?????

预处理出g数组就可以直接出答案了

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. LL in() {
  4. char ch; LL x = 0, f = 1;
  5. while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
  6. for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));
  7. return x * f;
  8. }
  9. const int maxn = 2e6 + 10;
  10. LL g[maxn], a[maxn];
  11. LL n, sqt, m;
  12. int getid(LL x) { return x <= sqt? x : m - n / x + 1; }
  13. int main() {
  14. n = in();
  15. sqt = sqrt(n);
  16. for(LL i = 1; i <= n; i = a[m] + 1)
  17. a[++m] = n / (n / i), g[m] = a[m] - 1;
  18. for(int i = 2; i <= sqt; i++) {
  19. if(g[i] != g[i - 1]) {
  20. LL sqr = a[i] * a[i];
  21. for(int j = m; a[j] >= sqr; j--)
  22. g[j] -= g[getid(a[j] / i)] - g[i - 1];
  23. }
  24. }
  25. printf("%lld\n", g[m]);
  26. return 0;
  27. }

loj #6235. 区间素数个数 min_12.5筛的更多相关文章

  1. loj #6235. 区间素数个数

    #6235. 区间素数个数 题目描述 求 1∼n 1\sim n1∼n 之间素数个数. 输入格式 一行一个数 n nn . 输出格式 一行一个数,表示答案. 样例 样例输入 10 样例输出 4 样例解 ...

  2. LOJ.6235.区间素数个数(Min_25筛)

    题目链接 \(Description\) 给定\(n\),求\(1\sim n\)中的素数个数. \(2\leq n\leq10^{11}\). \(Solution\) Min_25筛.只需要求出\ ...

  3. loj#6235. 区间素数个数(min25筛)

    题意 题目链接 Sol min25筛的板子题,直接筛出\(g(N, \infty)\)即可 筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉 #inclu ...

  4. LOJ6235 区间素数个数(min_25筛)

    题目链接:LOJ 题目大意:看到题目名字应该都知道是啥了吧. $1\le N\le 10^{11}$. 阉割版 min_25 筛.发现答案实际上就是 min_25 筛中 $g(N,pl)$ 的值.(取 ...

  5. LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...

  6. [LOJ6235]区间素数个数

    题目大意: 给定$n(n\leq10^{11})$,求$\pi(n)$. 思路: 计算$\pi$函数有$O(n^{\frac23})$的Lehmer算法,这里考虑$O(\frac{n^{\frac34 ...

  7. Prime Count 求大区间素数个数

    http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605

  8. poj 2689Prime Distance(区间素数)埃氏筛法

    这道题的L和R都很大,所以如果直接开一个1~R的数组明显会超时.但是R-L并不大,所以我们考虑把这个区间(L--R)移动到(1--(R-L+1))这个区间再开数组(就是把每个数减L再加1).接下来先用 ...

  9. UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制

    题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...

随机推荐

  1. 【render】partial及其局部变量

    原文:http://www.cnblogs.com/lwm-1988/archive/2011/09/13/2175041.html 1. partial 1.1 把partial作为view的一部分 ...

  2. 设置android的versionCode

    在config.xml里面设置 android-versionCode="1" AndroidManifest.xml 将会修改 android:versionCode=" ...

  3. 如何将DevExpress的Gridcontrol导出到Excel

    private void simpleButton1_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new S ...

  4. python(时间模块,序列化模块等)

    一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon ...

  5. Android广播接收者

    其实,在什么是广播的第一句就已经说明了广播有什么用了.对了,笼统一点讲就是用来传输数据的.具体一点说就是:1. 实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能 ...

  6. loader的简单使用过程分析

    首先,fragment或者activity必须实现callback接口 必须实现的三个方法为 public Loader<Cursor> onCreateLoader(int id, Bu ...

  7. Quartz_1_简单编程式任务调度使用(SimpleTrigger)

    最近在工作中,要做定时任务的更能,最开始的时候,想到的是 JavaSE 中,自带 Timer 及 TimerTask 联合使用,完成定时任务.最后发现,随着业务的复杂,JDK 中的 Timer 和 T ...

  8. [patl1-046]整除光棍

    解题关键:模拟除法 #include<cstdio> #include<cstring> #include<algorithm> #include<cstdl ...

  9. python http认证

    Requests 库有一个auth 模块专门用来处理HTTP 认证: import requestsfrom requests.auth import AuthBasefrom requests.au ...

  10. c++ public protected private 继承

    1:访问控制 1.1 public 这类型成员可以被类本身函数访问,也可以被外部创建的类对象调用.子类对象与子类内部可以访问 1.2 protected类型成员,只能被类本身函数访问.外部创建的类对象 ...