uoj#188. 【UR #13】Sanrd(Min_25筛)
题面
传送门
题解
这是一道语文题
不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子
我们考虑\(Min\_25\)筛的过程,设
\[S(n,j)=\sum_{i=1}^nsec_p(i)[min_p(i)\geq P_j]\]
用人话来说的话,就是\(S(n,j)\)表示\(1\)到\(n\)之间所有满足最小值因子大于等于\(P_j\)的\(i\)的次大质因子之和
我们照例把质数和合数的贡献分开考虑。所有质数贡献为\(0\),而对于合数,我们枚举最小质因子\(P_k\)。此时分为两种情况,如果\(P_k\)不是次大质因子,那么\(S(n,j)\)要加上所有满足\(k>j\)的\(S(\left\lfloor\frac{n}{{P_k}^e}\right\rfloor,k+1)\)。如果\(P_k\)是次大质因子,那么剩下的数肯定是一个大于等于\(P_k\)的质因子,也就是\(P_k\)到\(\left\lfloor\frac{n}{{P_k}^e}\right\rfloor\)之间质数的个数
用从隔壁大佬那里偷来的公式来写的话就是这样子
\[S(n,j)=\sum_{k\ge j}\sum_{e=1}^{p_k^{e+1}\le n}S(\lfloor\frac{n}{p^{e}_k}\rfloor,k+1)+p_k\sum_{i=p_k}^{\lfloor\frac{n}{p^{e}_k}\rfloor}[i\in P]\]
//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int N=1e6+5;
int p[N],id1[N],id2[N],m,tot,sqr;bitset<N>vis;
ll l,r,qwq,w[N],g[N];
void init(int n){fp(i,2,n){if(!vis[i])p[++tot]=i;for(R int j=1;j<=tot&&1ll*i*p[j]<=n;++j){vis[i*p[j]]=1;if(i%p[j]==0)break;}}
}
ll S(ll n,int m){if(n<=2||p[m]>n)return 0;ll res=0;for(R int i=m;i<=tot&&1ll*p[i]*p[i]<=n;++i)for(R ll tmp=p[i];tmp*p[i]<=n;tmp*=p[i]){int k=(n/tmp<=sqr)?id1[n/tmp]:id2[qwq/(n/tmp)];res+=S(n/tmp,i+1)+(g[k]-i+1)*p[i];}return res;
}
ll calc(ll n){qwq=n,m=0;for(R ll i=1,j;i<=n;i=j+1){j=n/(n/i),w[++m]=n/i;w[m]<=sqr?id1[w[m]]=m:id2[n/w[m]]=m;g[m]=w[m]-1;}fp(j,1,tot)for(R int i=1;1ll*p[j]*p[j]<=w[i];++i){int k=(w[i]/p[j]<=sqr)?id1[w[i]/p[j]]:id2[n/(w[i]/p[j])];g[i]=g[i]-g[k]+j-1;}return S(n,1);
}
int main(){
// freopen("testdata.in","r",stdin);scanf("%lld%lld",&l,&r),init(sqr=sqrt(r));printf("%lld\n",calc(r)-calc(l-1));return 0;
}
转载于:https://www.cnblogs.com/bztMinamoto/p/10415464.html
uoj#188. 【UR #13】Sanrd(Min_25筛)相关推荐
- 【UOJ#188】Sanrd(min_25筛)
[UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(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筛有关求解次小质因子
#188. [UR #13]Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej的 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- 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 #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 ...
- 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\) (\( ...
最新文章
- linux rpc语言,Linux下RPC的hello world
- 四个角度教你评估一个产品的用户体验好坏 | PMCAFF
- tooltip trigger怎么改气泡的背景颜色_精装房这样改更完美,不砸墙不改电,低预算就能做到!...
- 项目经理升职了是啥_什么是升职率?
- leetcode(一)刷题两数之和
- selenium 难定位元素、时间插件
- HDU2502 月之数(解法三)【废除!!!】
- Sourcegraph 代码搜索
- IE6下解决select层级高的问题
- JCreator 使用技巧
- 阿里巴巴Java编程规范试题答案
- VC++ 屏幕捕获(DXGI)
- 邮件系统被退回的原因及解决办法
- 02年六代雅阁的整备质量_雅阁对不起,我不能爱你。
- 欧格教育:提升店铺流量的方法
- 修改Android开机画面
- c语言编程题总结,c语言编程题总结
- 基于共现提取人民的民义人物关系
- fix feeds/telephony/net/freeswitch/Makefile
- wordpress网站首页模板主题开发制作
热门文章
- Loopback Address
- mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)
- CSS之不使用Media Queries的自适应CSS
- 快速入门PyTorch(2)--如何构建一个神经网络
- hiveserver2 mysql_HiveServer2的配置使用
- 51 Python - 装饰器 参数化装饰器——装饰器更通用
- 【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】
- idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?...
- ubuntu 10.4非法关机后上不了网
- opengl模板缓冲区