CodeForces - 83D:Numbers (数学&递归 - min25筛 )
pro:给定三个整数L,R,P求[L,R]区间的整数有多少个是以P为最小因子的。L,R,P<2e9;
sol:
一: 比较快的做法是,用函数的思想递归。
用solve(N,P)表示求1到N有多少数字多少个的最小因子是P;
1,首先P是合数,或者N<P;solve=0;
2,否则,如果P*P>=N;solve=1;
3,solve=N/P-solve(N/P,i); 2<=i<P
由于P主要分布在sqrt(N),而且N每次log级别减小,所以收缩得很快。具体的复杂度我证明不来,但是感觉过程和min25筛差不多。 (62ms
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
bool check(int P)
{
for(int i=;i*i<=P;i++)
if(P%i==) return false;
return true;
}
int solve(int N,int P)
{
if(!check(P)||N<P) return ;
if(N/P<P) return ;
int res=N/P;
rep(i,,P-) res-=solve(N/P,i);
return res;
}
int main()
{
int A,B,P;
scanf("%d%d%d",&A,&B,&P);
printf("%d\n",solve(B,P)-solve(A-,P));
return ;
}
二:当时还不流行min25筛,否则这题大部分人都可以套板子了。我们知道min25的过程其实就是每次可以得到最小素因子为p的数的个数(或者之和),所以改一下板子即可(128ms
#include<bits/stdc++.h>
using namespace std;
#define ll int
const int maxn=;
ll Sqr,vis[maxn],pri[maxn],tot,m,id1[maxn],id2[maxn];
ll g[maxn],w[maxn]; //sp前i个素数之和。
void Sieve(int n)
{
tot=; vis[]=;
for(int i=;i<=n;i++){
if(!vis[i]) pri[++tot]=i;
for(int j=;pri[j]<=n/i;j++){
vis[i*pri[j]]=;
if(i%pri[j]==) break;
}
}
}
bool check(int P)
{
for(int i=;i*i<=P;i++)
if(P%i==) return false;
return true;
}
ll solve(ll n,ll K)
{
if(n<K) return ;
if(!check(K)) return ;
if(K>n/K) return ;
Sqr=sqrt(n); Sieve(Sqr); ll res=; m=;
for(ll i=,j;i<=n;i=j+){
j=n/(n/i); w[++m]=n/i;
if(w[m]<=Sqr) id1[w[m]]=m;
else id2[n/w[m]]=m;
g[m]=w[m]-; //1到n的素数个数,先设为n-1(1不考虑
}
for(int j=;j<=tot;j++){
for(int i=;i<=m&&pri[j]<=w[i]/pri[j];i++){
int k=(w[i]/pri[j]<=Sqr)?id1[w[i]/pri[j]]:id2[n/(w[i]/pri[j])];
g[i]=g[i]-(g[k]-(j-));
if(pri[j]==K&&i==) res+=g[k]-(j-); //K去筛,[1,N]时
}
}
return res+;//加上素数自己
}
int main()
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
printf("%d\n",solve(r,k)-solve(l-,k));
return ;
}
CodeForces - 83D:Numbers (数学&递归 - min25筛 )的更多相关文章
- Min25 筛与 Powerful Numbers
Min25 筛与 Powerful Numbers Min25 筛 大喊一声 Min25 NB!!! 这是一个非常神奇的东西,用于求更加普遍的积性函数的前缀和. 比如我们要求 \(\sum_{i=1} ...
- [总结] min-25筛
再不写总结我又会忘掉啊啊啊啊啊啊啊啊啊 这个\(min-25\)筛主要用来求一个积性函数的前缀和,就像这样\[\sum_{i=1}^n f(i)\] 不过这个积性函数要满足两个条件:质数\(p\)的函 ...
- min25筛学习总结
前言 杜教筛学了,顺便把min25筛也学了吧= =刚好多校也有一道题需要补. 下面推荐几篇博客,我之后写一点自己的理解就是了. 传送门1 传送门2 传送门3 这几篇写得都还是挺好的,接下来我就写下自己 ...
- min-25筛总结
怕忘了赶快更一下.就是求积性函数前缀和的. 没有 \(\LaTeX\) 原理 现在你有一个积性函数 f(1)=1 FP(p) FPK(p,k) 首先要求的是前缀和,那就是f(质数)+f(合数)+f(1 ...
- Min25 筛学习笔记
仅仅是 \(min25\) 筛最基本的方法,没有任何推式子的例题.(想了想还是加两道吧qwq) 这里解决的是 \(Luogu\) 那道模板题. min25 基本方法: 最基础的是两个式子: \[G(n ...
- LOJ# 572. 「LibreOJ Round #11」Misaka Network 与求和(min25筛,杜教筛,莫比乌斯反演)
题意 求 \[ \sum_{i = 1}^{n} \sum_{i = 1}^{n} f(\gcd(i, j))^k \pmod {2^{32}} \] 其中 \(f(x)\) 为 \(x\) 的次大质 ...
- BZOJ-5244 最大真因数(min25筛)
题意:一个数的真因数指不包括其本身的所有因数,给定L,R,求这个区间的所有数的最大真因数之和. 思路:min25筛可以求出所有最小因子为p的数的个数,有可以求出最小因子为p的所有数之和. 那么此题就是 ...
- loj#6235. 区间素数个数(min25筛)
题意 题目链接 Sol min25筛的板子题,直接筛出\(g(N, \infty)\)即可 筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉 #inclu ...
- 「学习笔记」Min25筛
「学习笔记」Min25筛 前言 周指导今天模拟赛五分钟秒第一题,十分钟说第二题是 \(\text{Min25}\) 筛板子题,要不是第三题出题人数据范围给错了,周指导十五分钟就 \(\text{AK ...
随机推荐
- [LOJ3053]希望
对于一组$s_{1\cdots k}$,合法的$u$构成一个连通块,满足$\left\lvert V\right\rvert-\left\lvert E\right\rvert=1$ 考虑算出算$f_ ...
- mysql笔记7--一句查询语句的过程
1 sql语句示例 select *from A where id=1 2 mysql基本架构图 (1)Mysql分为Server层和引擎层两个部分 (2)Server层包括连接器,查询缓存,分析器, ...
- PHP二维码添加logo的方法
PHP二维码添加logo的方法<pre> public function createqcode($text,$id){ include '/phpqrcode/phpqrcode.php ...
- RSA非对称式加解密笔记
1.服务器生成[公钥]和[私钥],成对生成: 2.客户端生成证书信息,使用[公钥]进行加密,前提是有公钥,并生成证书信息: 3.客户端发送自身的计算机名.MAC.用户名.证书内容给服务器: 4.服务器 ...
- perl修改镜像源地址
perl修改源地址 这里推荐中科大的源 http://mirrors.ustc.edu.cn/CPAN/ perl -MCPAN -e shell 1.执行cpan命令确认存在该命令 如果cpan执行 ...
- java实现限流
问题产生,当调用一个接口很频繁的时候,比如每秒调用一个接口100次.业务提现在抢购等.这时我们的服务器处理不过来就会拒绝服务,宕机等等...显然这不是我们需要的. 因此产生了限流这个.限流是什么呢,就 ...
- Python之路【第十篇】:Python面向对象之多态、多态性
阅读目录 一 多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @ab ...
- go上传图片微信服务器<<临时素材
type WxImage struct { Type string `json:"type"` MediaId string `json:"media_id"` ...
- 国际化地区语言码对照表(i18n)
af 公用荷兰语 af-ZA 公用荷兰语 - 南非 sq 阿尔巴尼亚 sq-AL 阿尔巴尼亚 -阿尔巴尼亚 ar 阿拉伯语 ar-DZ 阿拉伯语 -阿尔及利亚 ar-BH 阿拉伯语 -巴林 ar-EG ...
- T100 GR 报表常见知识点 (含套版制作)
轉載至赫非域 > T100 GR 报表常见知识点 前端操作 bron1984 7小时前 5浏览 0评论 8.9.1 注意事项 字体: 如果字型没选对,会造成没设对字型的数据汇出 PDF 格式乱掉 ...