传送门


省选之前做数论题会不会有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. Dockerfile 中的 COPY 与 ADD 命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 docker ...

  2. [十三]JavaIO之PushBackInputStream

    功能简介 PushBackInputStream是针对于输入的一种扩展功能 装饰器模式中的具体的装饰类,抽象的装饰器为FilterInputStream PushBackInputStream的重点在 ...

  3. 痞子衡嵌入式:ARM Cortex-M文件那些事(7)- 反汇编文件(.s/.lst/.dump)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的反汇编文件(.s, .lst, .dump). 痞子衡在第四.五.六节课分别介绍了编译器/链接器生成的3种output文件( ...

  4. SpringBoot系列——Spring-Data-JPA

    前言 jpa是ORM映射框架,更多详情,请戳:apring-data-jpa官网:http://spring.io/projects/spring-data-jpa,以及一篇优秀的博客:https:/ ...

  5. Java开发笔记(五十五)关键字static的用法

    前面介绍嵌套类的时候讲到了关键字static,用static修饰类,该类就变成了嵌套类.从嵌套类的用法可知,其它地方访问嵌套类之时,无需动态创建外层类的实例,直接创建嵌套类的实例就行.其实static ...

  6. Ext.extend

    Ext.extend:老版本的定义类,单继承 有两种使用方法,具体见附件中的Extend1.html和Extend2.html 附件如下: Ext.extend.zip

  7. HA总结:AWS 网络连接

    单数据中心 网络HA总结 参考:https://d1.awsstatic-china.com/aws-answers/AWS_Single_Data_Center_HA_Network_Connect ...

  8. Java实践:一个简易的http server和client的java源码学习和总结。

    一.基本思路: 1.服务器端通过socket(), 监听在TCP 8080端口,等待客户端来连接. 2.服务器端解析客户端的HTTP请求中的URI值,把本地的目录下指定文件通过java的读取文件的方式 ...

  9. JavaBean到JSon格式的转换例子的代码

    内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...

  10. C语言检测指定文件是否存在的代码

    内容之余,将做工程过程中比较常用的一些内容片段珍藏起来,下面资料是关于C语言检测指定文件是否存在的内容,希望能对小伙伴们有所用. #include <stdbool.h> #include ...