UOJ 188 【UR #13】Sanrd——min_25筛
令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) 表示 i 的最小质因子。
令 \( g(n,j)=\sum\limits_{i=1}^{n}[i \in P or min_i>p_j]1 \) ,其中 P 表示质数集合。
\( s(n,j)=s(n,j+1)+s(\frac{n}{p_j},j)+p_j(g(\frac{n}{p_j},cnt)-(j-1)) \) ,其中 cnt 表示 \( <=\sqrt n \) 的最大质数。
\( s(\frac{n}{p_j},j) \) 表示除掉 \( p_j \) 后是合数的数的贡献, \( g(\frac{n}{p_j},cnt)-(j-1) \) 表示除掉 \( p_j \) 后是一个 \( >=p_j \) 的质数的数的个数。
所以算 s 的时候要从小到大枚举 n 。如果每次从 m 开始枚举,在 n 较小的时候 continue 的话复杂度不对,但发现 j 是递减的,即 \( p_j \) 递减,所以每次最小的可行的 n 越来越小,用指针指一下就行了。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
const int N=;
ll n,p2[N],w[N],s[N],g[N];int m,cnt,base,p[N];bool vis[N];
void init()
{
m=cnt=;base=sqrt(n);
for(ll i=,j;i<=n;i=n/j+)w[++m]=j=n/i;
memset(vis,,sizeof vis);
for(int i=;i<=base;i++)
{
if(!vis[i])p[++cnt]=i,p2[cnt]=(ll)i*i;
for(int j=,d;j<=cnt&&(d=i*p[j])<=base;j++)
{vis[d]=;if(i%p[j]==)break;}
}
}
int Id(ll x){return x<=base?m-x+:n/x;}
void cz()
{
for(int i=;i<=m;i++)g[i]=w[i]-;
for(int j=,pl=;j<=cnt;j++,pl++)//pl=j-1
for(int i=;i<=m&&p2[j]<=w[i];i++)
g[i]-=g[Id(w[i]/p[j])]-pl;
}
ll solve()
{
init();cz();memset(s,,sizeof s);
int p0=;
for(int j=cnt;j;j--)
{
while(p0<=m&&p2[j]<=w[p0])p0++;
for(int i=p0-;i;i--)
{
int k=Id(w[i]/p[j]);
s[i]+=s[k]+(ll)p[j]*(g[k]-(j-));
}
}
return s[];
}
int main()
{
ll ans=;
scanf("%lld",&n);n--;if(n)ans=-solve();
scanf("%lld",&n);ans+=solve();
printf("%lld\n",ans);
return ;
}
UOJ 188 【UR #13】Sanrd——min_25筛的更多相关文章
- UOJ188. 【UR #13】Sanrd [min_25筛]
传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...
- UOJ188 Sanrd Min_25筛
传送门 省选之前做数论题会不会有Debuff啊 这道题显然是要求\(1\)到\(x\)中所有数第二大质因子的大小之和,如果不存在第二大质因子就是\(0\) 线性筛似乎可以做,但是\(10^{11}\) ...
- UOJ #188 Sanrd —— min_25筛
题目:http://uoj.ac/problem/188 参考博客:https://www.cnblogs.com/cjoieryl/p/10149748.html 关键是枚举最小质因子...所以构造 ...
- 【UOJ#188】Sanrd(min_25筛)
[UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...
- 「uoj#188. 【UR #13】Sanrd」
题目 不是很能看懂题意,其实就是求\([l,r]\)区间内所有数的次大质因子的和 这可真是看起来有点鬼畜啊 这显然不是一个积性函数啊,不要考虑什么特殊的函数了 我们考虑Min_25筛的过程 设\(S( ...
- 数论(8):min_25 筛(扩展埃氏筛)
min_25 筛介绍 我们考虑这样一个问题. \[ans=\sum_{i = 1}^nf(i)\\ \] 其中 \(1 \le n \le 10^{10}\) 其中 \(f(i)\) 是一个奇怪的函数 ...
- Min_25 筛与杜教筛
杜教筛 \(\) 是 \(\) 的前缀和,\(\), \(\) 同理. 假设 \( × = ℎ\) ,并且 \(, \) 易求出,\(\) 难求出. 那么 \[H () = \sum_{ \cdot ...
- [复习]莫比乌斯反演,杜教筛,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 ...
随机推荐
- 在EO中对数据的重复性进行验证
只有在数据提交到EO中的时候才会执行set方法进行验证. 如果想要实现实时验证,可以在输入参数的地方添加事件,但是无需为此事件创建方法. 我的理解: 1.我们在页面上对内容进行修改的时候,OAF框架仅 ...
- Java远程调试 java -Xdebug各参数说明
JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的 调试环境,并支持设置断点,支持线程线级的调试 JAVA的调试方法如下: 1.首先支持J ...
- redis中的"HashMap"
redis是一个存储键值对的内存数据库,其存储键值的方式和java中的HashMap相似. 表征redis数据库的结构体是redisDb (在server.h文件中),redis服务器默认有16个数据 ...
- SQL触发器实例(下)
基本语法: Create Trigger [TriggerName] ON [TableName] FOR [Insert][,Delete][,Update] AS --触发器要执行的操作语句. G ...
- 北邮新生排位赛2解题报告d-e
<> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...
- 51nod1269Devu and Flowers
题解: 如果没有限制每一种花有多少,那么就是简单的排列组合问题. 那么我们强制让一些花一定都要选. 暴力搜索,然后组合数(逆元) 采用容斥原理来计算最后的答案 代码: #include<bits ...
- weblogic下更改jsp不生效的解决办法
1.删除user_projects\domains\base_domain(我自己的域名)\servers\AdminServer目录下的所有文件夹 一下为转载from:http://blog.itp ...
- Nginx+Tomcat简单集群
1.软件准备下载Nginx和Tomcat解压到一个目录2.修改Tomcat的端口Tomcat1:修改Server.xmlTomcat2:修改Server.xml3.测试Tomcat是否正常运行分别访问 ...
- 玩转X-CTR100 l STM32F4 l W25Q64 SPI串行FLASH存储
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载FLA ...
- <NET CLR via c# 第4版>笔记 第12章 泛型
泛型优势: 源代码保护 使用泛型算法的开发人员不需要访问算法的源代码.(使用c++模板的泛型技术,算法的源代码必须提供给使用算法的用户) 类型安全 向List<DateTime>实例添加一 ...