【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^{11}l≤r≤1011
这种和质因数有关的奇奇怪怪的函数的前缀和可以试试魔改min_25筛
设
S(n,j)=∑i=2n[minp(i)>pj]f(i)S(n,j)=\sum_{i=2}^n[minp(i)>p_j]f(i)S(n,j)=i=2∑n[minp(i)>pj]f(i)
枚举最小的质因子pkp_kpk以及次数eee
如果pkp_kpk不是次大质因子,直接递归到S(⌊npke⌋,k)S(\lfloor\frac{n}{p_k^e}\rfloor,k)S(⌊pken⌋,k)
否则考虑pkp_kpk的贡献
如果是严格次大,那么枚举最大的质因子
否则就是[e>1][e>1][e>1]
S(n,j)=∑k=j+1pk≤n∑e=1pke≤n(S(⌊npke⌋,k)+∑i=pk+1⌊npke⌋[i∈prime]+[e>1])S(n,j)=\sum_{k=j+1}^{p_k\leq\sqrt n}\sum_{e=1}^{p_k^e\leq n}(S(\lfloor\frac{n}{p_k^e}\rfloor,k)+\sum_{i=p_k+1}^{\lfloor\frac{n}{p_k^e}\rfloor}[i\in prime]+[e>1])S(n,j)=k=j+1∑pk≤ne=1∑pke≤n(S(⌊pken⌋,k)+i=pk+1∑⌊pken⌋[i∈prime]+[e>1])
注意pk+1p_k+1pk+1可能大于⌊npke⌋\lfloor\frac{n}{p_k^e}\rfloor⌊pken⌋,要特判一下
然后用min_25的方法预处理出质数个数的前缀和即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#define MAXN 1000005
using namespace std;
const int N=1e6;
int np[MAXN],pl[MAXN],cnt;
void init()
{np[1]=1;for (int i=2;i<=N;i++){if (!np[i]) pl[++cnt]=i;for (int j=1,x;(x=i*pl[j])<=N;j++){np[x]=1;if (i%pl[j]==0) break;}}
}
typedef long long ll;
ll val[MAXN],n,m;
int key[MAXN],yek[MAXN],tot;
inline int getkey(ll x){return x<=m? key[x]:yek[n/x];}
ll g[MAXN];
ll S(ll n,int j)
{if ((ll)pl[j]*pl[j]>n) return 0;ll sum=0;for (int k=j+1;(ll)pl[k]*pl[k]<=n&&k<=cnt;k++)for (ll e=1,v=pl[k];v<=n;e++,v*=pl[k])sum+=S(n/v,k)+pl[k]*(max(0ll,g[getkey(n/v)]-k)+(e>1));return sum;
}
ll solve(ll N)
{m=sqrt(n=N);tot=0;for (ll l=1,r;l<=n;l=r+1){r=n/(n/l);val[++tot]=n/l;if (val[tot]<=m) key[val[tot]]=tot;else yek[n/val[tot]]=tot;}for (int i=1;i<=tot;i++) g[i]=val[i]-1;for (int j=1;j<=cnt;j++)for (int i=1;(ll)pl[j]*pl[j]<=val[i];i++)g[i]-=g[getkey(val[i]/pl[j])]-j+1;return S(n,0);
}
int main()
{init();ll l,r;cin>>l>>r;cout<<solve(r)-solve(l-1);return 0;
}
【UOJ188】 Sanrd【类min_25筛】相关推荐
- 【UOJ#188】Sanrd(min_25筛)
[UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...
- uoj#188. 【UR #13】Sanrd(Min_25筛)
题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...
- [51NOD1847]奇怪的数学题(杜教筛+min_25筛+第二类斯特林数)
f(x)f(x)f(x)表示xxx的次大约数,有f(x)=xx的最小质因数f(x)=\frac{x}{x的最小质因数}f(x)=x的最小质因数x,那么 ∑i=1n∑j=1nsgcd(i,j)k=∑i ...
- Min_25 筛小结
Min_25 筛这个东西,完全理解花了我很长的时间,所以写点东西来记录一些自己的理解. 它能做什么 对于某个数论函数 \(f\),如果满足以下几个条件,那么它就可以用 Min_25 筛来快速求出这个函 ...
- [复习]莫比乌斯反演,杜教筛,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 ...
- Min_25筛有关求解次小质因子
#188. [UR #13]Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej的 ...
- 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\) (\( ...
最新文章
- 单片机如何从上电复位执行到main函数?
- 在NodeJS中操作文件常见的API
- PAT甲级1016 Phone Bills :[C++题解]字符串处理(复杂题)(C语言格式化读入、输出很便利!!!)
- 实战SSM_O2O商铺_41【前端展示】店铺列表页面Dao+Service+Controller层的实现
- cut、tee、split、xargs、bc命令
- wxWidgets:wxAcceleratorTable类用法
- MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
- Linux测量进程内存峰值,linux / unix进程的峰值内存使用情况
- 【 Date 对象 参考手册】
- Gartner发布2020年十大战略科技发展趋势
- final string 堆区 栈区 java_JVM内存初学 堆、栈、方法区
- solr mysql增量导入_急急急,在线等!solr4.10结合oracle增量导入数据问题!
- Trend Micro Password Manager 多个高危漏洞
- 在Git中更改文件名的大小写
- KnockoutJS 3.X API 第七章 其他技术(3) 延迟更新
- Android CallStack
- Excel如何快速提取单元格括号内数据
- (大五人格分析)开放型人格的优势和职业发展
- 关于windows server 2016服务器 exchange 2010 managment Shell 停止工作的问题(已解决)
- windows 系统错误码总结
热门文章
- c++ 对象起始地址 指针靠齐_你需要知道的各种指针运算
- python读取mysql以html形式输出_python实现处理mysql结果输出方式
- 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的大人孩子~
- 老婆晚上不想睡?这个操作你要会!
- 每日一笑 | 在托运行李时,怎样才能不会因为超重被罚钱?
- Linux系统管理员的Bash指南,11条Bash实践经验!
- 近期资料分享汇总,还不快来看看你漏了哪份没拿?
- 入门 | 机器学习第一课:决策树学习概述与实现
- 还不知道这 11 个超酷的编程新工具你就 out 了!
- 重磅大礼!100本《机器学习》by周志华,免费送!