题目:http://uoj.ac/problem/188

参考博客:https://www.cnblogs.com/cjoieryl/p/10149748.html

关键是枚举最小质因子...所以构造的 S 与最小质因子有关。

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int const xn=1e6+;
int pri[xn],cnt,sqr;
ll n,w[xn],m,f[xn];
bool vis[xn];
void init(ll mx)
{
for(int i=;i<=mx;i++)
{
if(!vis[i])pri[++cnt]=i;
for(int j=;j<=cnt&&(ll)i*pri[j]<=mx;j++)
{
vis[i*pri[j]]=;
if(i%pri[j]==)break;
}
}
}
int Id(ll x)
{
if(x>sqr)return n/x;
return m-x+;
}
ll S(ll x,int y)
{
if(pri[y]>x)return ;
ll ret=;
for(int i=y;i<=cnt&&(ll)pri[i]*pri[i]<=x;i++)
for(ll p0=pri[i];p0*pri[i]<=x;p0*=pri[i])
ret+=S(x/p0,i+)+(ll)pri[i]*(f[Id(x/p0)]-i+);
return ret;
}
ll solve(ll nw)
{
m=; n=nw; sqr=sqrt(n);
for(ll i=,j;i<=n;i=j+)
{w[++m]=n/i; j=n/(n/i); f[m]=w[m]-;}
for(int j=;j<=cnt;j++)
for(int i=;i<=m&&(ll)pri[j]*pri[j]<=w[i];i++)
f[i]=f[i]-(f[Id(w[i]/pri[j])]-j+);
return S(n,);
}
int main()
{
ll L,R; scanf("%lld%lld",&L,&R); init(sqrt(R));
printf("%lld\n",solve(R)-solve(L-));
return ;
}

UOJ #188 Sanrd —— min_25筛的更多相关文章

  1. UOJ188 Sanrd Min_25筛

    传送门 省选之前做数论题会不会有Debuff啊 这道题显然是要求\(1\)到\(x\)中所有数第二大质因子的大小之和,如果不存在第二大质因子就是\(0\) 线性筛似乎可以做,但是\(10^{11}\) ...

  2. UOJ188. 【UR #13】Sanrd [min_25筛]

    传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...

  3. UOJ 188 【UR #13】Sanrd——min_25筛

    题目:http://uoj.ac/problem/188 令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) ...

  4. 【UOJ#188】Sanrd(min_25筛)

    [UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...

  5. 「uoj#188. 【UR #13】Sanrd」

    题目 不是很能看懂题意,其实就是求\([l,r]\)区间内所有数的次大质因子的和 这可真是看起来有点鬼畜啊 这显然不是一个积性函数啊,不要考虑什么特殊的函数了 我们考虑Min_25筛的过程 设\(S( ...

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

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

  7. 数论(8):min_25 筛(扩展埃氏筛)

    min_25 筛介绍 我们考虑这样一个问题. \[ans=\sum_{i = 1}^nf(i)\\ \] 其中 \(1 \le n \le 10^{10}\) 其中 \(f(i)\) 是一个奇怪的函数 ...

  8. Min_25 筛与杜教筛

    杜教筛 \(\) 是 \(\) 的前缀和,\(\), \(\) 同理. 假设 \( × = ℎ\) ,并且 \(, \) 易求出,\(\) 难求出. 那么 \[H () = \sum_{ \cdot ...

  9. Min_25 筛小结

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

随机推荐

  1. 最牛技术 1秒启动Linux的窍门

    1秒启动Linux可以实现吗?我们知道Linux系统开机并不算快,最少也需要11秒,但是,现在有一个技巧,可以1秒打开linux系统,到底是什么技术这么牛?请看下文详细介绍 尽可能快的启动系统,对于自 ...

  2. shell编程学习笔记--整数自增

    在Shell脚本中,用于while或for循环中经常要涉及到整数自增的情况,下面罗列下可能的方式 [方式一]declare -i来声明整数变量 root@localhost:~# declare -i ...

  3. Spring_配置 Bean(1)

  4. IDEA 编译时 未结束的字符串文字

    这个问题就是编码的问题,修改文件的编码可以解决 1. IDEA中   file-->Settings 找到File Encodings,将IDE Encoding.Project Encodin ...

  5. linux 压缩以及解压命令

    转载:http://blog.csdn.net/mmllkkjj/article/details/6768294/ tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件- ...

  6. java中HashMap集合的常用方法

    public Object clone() 返回hashMap集合的副本 其余的方法都是实现Map集合的 https://www.cnblogs.com/xiaostudy/p/9510763.htm ...

  7. NQueens, NQueens2 N皇后问题,递归回溯

    N皇后的规则:任意两个皇后不在同一行,不在同一列,不在同一斜线上. 算法分析:这种问题就用回溯法.深度搜索然后回溯.用一个数组记录每一行皇后的位置,下标代表行,值代表列.对行深度搜索. public ...

  8. WPF的外观装饰类——Border

    public class Border : System.Windows.Controls.Decorator 说明:在另一个元素的周围绘制边框.背景或同时绘制二者.

  9. main函数的一点知识

    main函数参数意义. main函数执行前. main还是执行后.

  10. Node——用http-proxy 做反向代理服务器

    时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外——购买了一个小型的 CentOS VPS 使用着.在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如 ...