【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筛)相关推荐

  1. 【UOJ188】 Sanrd【类min_25筛】

    题意:设f(i)f(i)f(i)表示iii的不严格次大质因子(没有为000),求∑i=lrf(i)\sum_{i=l}^rf(i)∑i=lr​f(i) l≤r≤1011l\leq r\leq10^{1 ...

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

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

  3. Min_25筛有关求解次小质因子

    #188. [UR #13]Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej​的 ...

  4. 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∑n​i=1∑n​f(gcd(i,j))k=∑d=1n ...

  5. Min_25 筛小结

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

  6. 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 ...

  7. 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 ...

  8. LOJ.6053.简单的函数(Min_25筛)

    题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...

  9. loj #6053 简单的函数 min_25筛

    \(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...

最新文章

  1. Angular 4+ HttpClient
  2. win10下编译和使用mnn 2021
  3. 【译】理解 JavaScript 中函数调用和 this
  4. 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 )
  5. 设计模式-创建型-生成器
  6. 计算机模块考试注意事项,常考计算机模块考试操作注意事项.doc
  7. LInux下du, df, top, free, pstack, su, sudo, adduser, password命令
  8. android 基类fragment,Android DialogFragment 基类的定制
  9. 第二场周赛(递归递推个人Rank赛)——题解
  10. 一加6屏幕测试代码_一加 7的普通版与Pro/参数对比
  11. ef mysql 中文乱码,mysql解決中文亂碼問題
  12. Hercules配置文件HERCULES.CNF范本
  13. 【新闻发布系统】登录和注销的实现
  14. Checkbox和RadioRadioButton及其实例
  15. 华为ipd项目管理流程_从偶然成功到持续成功—华为IPD体系的建设
  16. Numpy 中某个矩阵的平方距离计算方法
  17. BIOS的全局变量gST gBS gDS
  18. ocilib 使用_LibOciLib使用说明(2017-1-26更新)
  19. 《算法分析与设计》练习6
  20. Anaconda之通过可视化界面配置虚拟环境

热门文章

  1. 什么是Kubernetes的CRI - 容器运行时接口
  2. 让SAP云平台上的Web应用使用destination服务
  3. 平衡树-Treap基础内容
  4. 数据可视化|实验三 分析特征内部数据分布于分散状况
  5. 外观数列Python解法
  6. linux系统网络对时,Linux系统网络优化【转】
  7. 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...
  8. android服务自动重启,安卓service关闭后怎么自动重启
  9. 手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码
  10. es6添加删除class_ES6中常用的10个新特性讲解