【UOJ#188】Sanrd(min_25筛)
【UOJ#188】Sanrd(min_25筛)
题面
UOJ
题解
今天菊开讲的题目。(千古神犇陈菊开,扑通扑通跪下来)
题目要求的就是所有数的次大质因子的和。
这个部分和\(min\_25\)筛中枚举最小值因子有异曲同工之妙。
min_25筛什么的戳这里
并且这题并没有积性函数。
所以我们先筛出质数个数。
然后考虑如何计算答案\(S(n,1)\)
首先看初值,假设当前计算的是\(S(x,y)\)
表示的是\([1,x]\)中,所有最小质因子大于等于\(Prime_y\)的贡献
所有质数的贡献显然是\(0\),我们考虑计算合数的答案。
枚举最小质因子以及这个质因子的次幂,在只剩下两个质因子的时候统计答案。
既然只剩下两个质因子,那么需要计算的就是\(x\)中所有大于等于\(Prime_y\)的质数。
因为\(S(x,y)\)一定右\(S(?,y-1)\)转移过来
那么它的次小质因子就是\(Prime_{y-1}\),直接计算即可。
还需要额外考虑\(p^k\)的贡献就是\(p\)
#include<iostream>
#include<cmath>
using namespace std;
#define ll long long
#define MAX 1000000
ll L,R,ans,w[MAX],g[MAX],Sqr;
int id1[MAX],id2[MAX],m,pri[MAX],tot;
bool zs[MAX];
void pre(int n)
{for(int i=2;i<=n;++i){if(!zs[i])pri[++tot]=i;for(int j=1;j<=tot&&i*pri[j]<=n;++j){zs[i*pri[j]]=true;if(i%pri[j]==0)break;}}
}
ll S(ll n,ll x,int y)
{if(x<=1||pri[y]>x)return 0;int k=(x<=Sqr)?id1[x]:id2[n/x];ll ret=1ll*pri[y-1]*(g[k]-y+1);for(int i=y;i<=tot&&1ll*pri[i]*pri[i]<=x;++i){ll p1=pri[i],p2=1ll*pri[i]*pri[i];for(int e=1;p2<=x;++e,p1=p2,p2*=pri[i])ret+=S(n,x/p1,i+1)+pri[i];}return ret;
}
ll Solve(ll n)
{tot=m=0;pre(Sqr=sqrt(n));for(ll i=1,j;i<=n;i=j+1){j=n/(n/i);w[++m]=n/i;g[m]=w[m]-1;if(w[m]<=Sqr)id1[w[m]]=m;else id2[j]=m;}for(int j=1;j<=tot;++j)for(int i=1;i<=m&&1ll*pri[j]*pri[j]<=w[i];++i){int k=(w[i]/pri[j]<=Sqr)?id1[w[i]/pri[j]]:id2[n/(w[i]/pri[j])];g[i]-=g[k]-j+1;}return S(n,n,1);
}
int main()
{cin>>L>>R;cout<<Solve(R)-Solve(L-1)<<endl;return 0;
}
转载于:https://www.cnblogs.com/cjyyb/p/9269389.html
【UOJ#188】Sanrd(min_25筛)相关推荐
- 【UOJ188】 Sanrd【类min_25筛】
题意:设f(i)f(i)f(i)表示iii的不严格次大质因子(没有为000),求∑i=lrf(i)\sum_{i=l}^rf(i)∑i=lrf(i) l≤r≤1011l\leq r\leq10^{1 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- Min_25筛有关求解次小质因子
#188. [UR #13]Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej的 ...
- Loj #572. 「LibreOJ Round #11」Misaka Network 与求和(莫比乌斯反演 + 杜教筛 + min_25筛(递推版))
直接反演一下:∑i=1n∑i=1nf(gcd(i,j))k\sum_{i = 1}^n\sum_{i = 1}^nf(gcd(i,j))^ki=1∑ni=1∑nf(gcd(i,j))k=∑d=1n ...
- Min_25 筛小结
Min_25 筛这个东西,完全理解花了我很长的时间,所以写点东西来记录一些自己的理解. 它能做什么 对于某个数论函数 \(f\),如果满足以下几个条件,那么它就可以用 Min_25 筛来快速求出这个函 ...
- LOJ 572 「LibreOJ Round #11」Misaka Network 与求和——min_25筛
题目:https://loj.ac/problem/572 莫比乌斯反演得 \( ans=\sum\limits_{D=1}^{n}\left\lfloor\frac{n}{D}\right\rflo ...
- 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 ...
- LOJ.6053.简单的函数(Min_25筛)
题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...
- loj #6053 简单的函数 min_25筛
\(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...
最新文章
- Angular 4+ HttpClient
- win10下编译和使用mnn 2021
- 【译】理解 JavaScript 中函数调用和 this
- 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 )
- 设计模式-创建型-生成器
- 计算机模块考试注意事项,常考计算机模块考试操作注意事项.doc
- LInux下du, df, top, free, pstack, su, sudo, adduser, password命令
- android 基类fragment,Android DialogFragment 基类的定制
- 第二场周赛(递归递推个人Rank赛)——题解
- 一加6屏幕测试代码_一加 7的普通版与Pro/参数对比
- ef mysql 中文乱码,mysql解決中文亂碼問題
- Hercules配置文件HERCULES.CNF范本
- 【新闻发布系统】登录和注销的实现
- Checkbox和RadioRadioButton及其实例
- 华为ipd项目管理流程_从偶然成功到持续成功—华为IPD体系的建设
- Numpy 中某个矩阵的平方距离计算方法
- BIOS的全局变量gST gBS gDS
- ocilib 使用_LibOciLib使用说明(2017-1-26更新)
- 《算法分析与设计》练习6
- Anaconda之通过可视化界面配置虚拟环境
热门文章
- 什么是Kubernetes的CRI - 容器运行时接口
- 让SAP云平台上的Web应用使用destination服务
- 平衡树-Treap基础内容
- 数据可视化|实验三 分析特征内部数据分布于分散状况
- 外观数列Python解法
- linux系统网络对时,Linux系统网络优化【转】
- 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...
- android服务自动重启,安卓service关闭后怎么自动重启
- 手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码
- es6添加删除class_ES6中常用的10个新特性讲解