传送门


省选之前做数论题会不会有Debuff啊

这道题显然是要求\(1\)到\(x\)中所有数第二大质因子的大小之和,如果不存在第二大质因子就是\(0\)

线性筛似乎可以做,但是\(10^{11}\)的数据范围让人望而却步,而杜教筛需要对\(f(x)\)找到一个函数\(g(x)\)做狄利克雷卷积成为一个好算前缀和的函数\(h(x)\),相信各位是找不到这样一个函数的。所以考虑Min_25筛。但用Min_25筛还不知道要筛什么东西,故从Min_25筛最后的计算过程入手。

Min_25筛的每一层递归中计算了两种数对答案的贡献:①当前被拼出的数乘上一个质数的若干次方产生的数的贡献;②当前被拼出的数乘上一个质数的若干次方再乘上其他质数产生的数的贡献。对于②的贡献我们递归处理,所以只需考虑①的情况。

①中,如果乘上的质数的指数\(> 1\),产生贡献的就是当前质因子,否则就是上一个被乘上的因子。上一个被乘上的因子在递归过程中已经传递了,所以我们只需要上一个被乘上的因子产生了多少次贡献,即在一段区间内共有多少个质数。所以筛出\(\forall x \in [1,N] \sum\limits_{i=1}^{\frac{N}{x}} [i \in Prime]\)就可以计算答案。

#include<bits/stdc++.h>
using namespace std; #define int long long
inline int read(){
int a = 0;
char c = getchar();
while(!isdigit(c)) c = getchar();
while(isdigit(c)){
a = a * 10 + c - 48;
c = getchar();
}
return a;
} const int MAXN = 1e6 + 7;
int prm[MAXN] , cnt;
bool nprm[MAXN]; void init_prm(){
for(int i = 2 ; i <= 1e6 ; ++i){
if(!nprm[i])
prm[++cnt] = i;
for(int j = 1 ; i * prm[j] <= 1e6 ; ++j){
nprm[i * prm[j]] = 1;
if(i % prm[j] == 0) break;
}
}
} int id1[MAXN] , id2[MAXN] , val[MAXN << 1] , f[MAXN << 1] , N , T , Cnt; int find(int x){return x <= T ? id1[x] : id2[N / x];} void init_Min25(){
T = sqrt(N); Cnt = 0;
for(int i = 1 , pi ; i <= N ; i = pi + 1){
int cur = N / i;
pi = N / cur;
val[cur <= T ? id1[cur] = ++Cnt : id2[pi] = ++Cnt] = cur;
f[Cnt] = cur - 1;
}
for(int i = 1 ; i <= cnt && prm[i] * prm[i] <= N ; ++i){
int p = find(prm[i - 1]);
for(int j = 1 ; val[j] >= prm[i] * prm[i] ; ++j){
int q = find(val[j] / prm[i]);
f[j] -= f[q] - f[p];
}
}
} int solve(int x , int p){
if(prm[p] > x) return 0;
int sum = (f[find(x)] - f[find(prm[p - 1])]) * prm[p - 1];
for(int j = p ; j <= cnt && prm[j] * prm[j] <= x ; ++j){
int times = prm[j];
while(times * prm[j] <= x){
sum += solve(x / times , j + 1) + prm[j];
times *= prm[j];
}
}
return sum;
} int work(){init_Min25(); return solve(N , 1);} signed main(){
init_prm();
cin >> N; --N; int sum = work();
cin >> N; cout << work() - sum;
return 0;
}

UOJ188 Sanrd Min_25筛的更多相关文章

  1. UOJ188. 【UR #13】Sanrd [min_25筛]

    传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...

  2. UOJ 188 【UR #13】Sanrd——min_25筛

    题目:http://uoj.ac/problem/188 令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) ...

  3. UOJ #188 Sanrd —— min_25筛

    题目:http://uoj.ac/problem/188 参考博客:https://www.cnblogs.com/cjoieryl/p/10149748.html 关键是枚举最小质因子...所以构造 ...

  4. 【UOJ#188】Sanrd(min_25筛)

    [UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...

  5. Min_25 筛小结

    Min_25 筛这个东西,完全理解花了我很长的时间,所以写点东西来记录一些自己的理解. 它能做什么 对于某个数论函数 \(f\),如果满足以下几个条件,那么它就可以用 Min_25 筛来快速求出这个函 ...

  6. LOJ572. 「LibreOJ Round #11」Misaka Network 与求和 [莫比乌斯反演,杜教筛,min_25筛]

    传送门 思路 (以下令\(F(n)=f(n)^k\)) 首先肯定要莫比乌斯反演,那么可以推出: \[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2\sum_{d ...

  7. 数论(8):min_25 筛(扩展埃氏筛)

    min_25 筛介绍 我们考虑这样一个问题. \[ans=\sum_{i = 1}^nf(i)\\ \] 其中 \(1 \le n \le 10^{10}\) 其中 \(f(i)\) 是一个奇怪的函数 ...

  8. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  9. min_25筛学习笔记【待填坑】

    看见ntf和pb两位大佬都来学了,然后就不自觉的来学了. 我们考虑这样一个问题. $$ans=\sum_{i=1}^nf(i)$$其中$1\leq n\leq 10^{10}$ 其中$f(i)$是一个 ...

随机推荐

  1. 深耕品质,腾讯WeTest《2018中国移动游戏质量白皮书》正式发布

    本文由云+社区发表 作者:腾讯WeTest 原文链接:https://wetest.qq.com/lab/view/437.html 对于游戏行业的不少人来说,2018年是一个多事之秋. 放眼大局,游 ...

  2. 以语音评测的PC端demo代码为例,讲解口语评测如何实现

    本文由云+社区发表 作者:腾讯智慧教育 概述 腾讯云智聆口语评测(英文版)(Smart Oral Evaluation-English,SOE-E)是腾讯云推出的语音评测产品,是基于英语口语类教育培训 ...

  3. java web 项目打包(war 包)并部署

    1.在eclipse中右键单击项目,然后Export选择WAR file,生成项目的WAR文件.具体步骤请看图片详细操作步骤: 2.把生成的WAR文件放到tomcat解压之后的webapps文件夹下. ...

  4. JS引擎线程的执行过程的三个阶段(二)

    继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引 ...

  5. Linux中more和less命令用法

    一.more命令 more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 ...

  6. 接口测试之深入理解HTTPS

    前言 随着网络安全问题越来越被重视,HTTPS协议的使用已经逐渐主流化.目前的主流站点均已使用了HTTPS协议:比如:百度.淘宝.京东等一二线主站都已经迁移到HTTPS服务之上.而作为测试人员来讲,也 ...

  7. QT信号槽connect的第五个参数

    用过QT的小伙伴都知道连接信号槽的connect方法,但是这个方法有第五个参数,一般都是用的默认的 connect(th,SIGNAL(started()),tmpmyobject,SLOT(show ...

  8. 【Linux】【Java】CentOS7安装最新版Java1.8.191运行开发环境

    1.前言 本来在写[Linux][Apatch Tomcat]安装与运行.都快写完了. 结果...我忘记安装 Java 环境 然后...新开了博客编辑页面. 最后...我的那个没了...没了...真的 ...

  9. MySQL5.5.51启用网络远程连接

    在其它电脑主机上访问时提示host ip is not allowed to connect to this mysql 下面代码为解决该问题的方法: :\Program Files\mysql-\b ...

  10. python 实例四

    https://www.cnblogs.com/evablogs/p/6754981.html 题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析: 月份天数: 月份 天数 2 平年28天 ...