CH 3101 - 阶乘分解 - [埃筛]
题目链接:传送门
题解:
$(1e6)!$ 这种数字,表示都表示不出来,想直接 $O(\sqrt{N})$ 分解质因数这种事情就不要想了。
考虑 $N!$ 的特殊性,这个数字的所有可能包含的质因子,就是 $1 \sim N$ 这些数所包含的质因子。因此,只需要考虑 $1 \sim N$ 这每个数字的质因子即可。
那么,不妨筛出属于 $1 \sim N$ 范围内的所有质数,对于每一个质数 $p$,$1 \sim N$ 中显然有 $\lfloor N/p \rfloor$ 个能够被 $p$ 整除的数字,也就是说 $N!$ 的质因子中,可以确定至少有这么 $\lfloor N/p \rfloor$ 个 $p$。换句话说,产生了 $\lfloor N/p \rfloor$ 的贡献。
然后,我们进一步考虑,$\lfloor N/p \rfloor$ 个能够被 $p$ 整除的数字中,显然还有 $\lfloor N/{p^2} \rfloor$ 个能够被 $p^2$ 整除的数字,这些数字产生进一步产生贡献 $\lfloor N/{p^2} \rfloor$,往后依次类推 $\lfloor N/{p^3} \rfloor, \lfloor N/{p^4} \rfloor, \cdots$。
AC代码:
#include<bits/stdc++.h>
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
int n; const int MAX=1e6;
bool noprm[MAX+];
vector<int> prm;
void Erato(int n)
{
noprm[]=noprm[]=;
for(int i=;i<=n;i++)
{
if(noprm[i]) continue;
prm.pb(i);
for(int j=i;j<=n/i;j++) noprm[i*j]=;
}
} int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); cin>>n;
Erato(n);
for(auto p:prm)
{
ll cnt=;
for(ll x=p;x<=n;x*=p) cnt+=n/x;
if(cnt>) cout<<p<<' '<<cnt<<'\n';
}
}
CH 3101 - 阶乘分解 - [埃筛]的更多相关文章
- 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘
/* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...
- 牛客练习赛33 B tokitsukaze and RPG (类埃筛)
链接:https://ac.nowcoder.com/acm/contest/308/B 来源:牛客网 tokitsukaze and RPG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/ ...
- 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m
给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后 ...
- luogu1445 [violet]樱花 阶乘分解
题目大意 求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数. 思路 咱们把式子整理得$$xy-(x+y)N!=0$$.$xy$和$x+y$?貌似可 ...
- Acwing 197. 阶乘分解
给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...
- LightOJ 1340 - Story of Tomisu Ghost 阶乘分解素因子
http://www.lightoj.com/volume_showproblem.php?problem=1340 题意:问n!在b进制下至少有t个后缀零,求最大的b. 思路:很容易想到一个数通过分 ...
- LightOJ - 1138 (二分+阶乘分解)
题意:求阶乘尾部有Q(1 ≤ Q ≤ 108)个0的最小N 分析:如果给出N,然后求N!尾部0的个数的话,直接对N除5分解即可(因为尾部0肯定是由5*2构成,那么而在阶乘种,2的因子个数要比5少,所以 ...
- AcWing 197. 阶乘分解 (筛法)打卡
给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...
- POJ 2689 - Prime Distance - [埃筛]
题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...
随机推荐
- gdb调试常用实用命令和core dump文件的生成(转)
1.生成core dump文件的方法: $ ulimit -c //查看是否为0 如果为0 $ ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的 ...
- Android 网络编程之最新OKHTTP:3.9.0
本节前言 本来是想围绕着HttpClient讲解的,后来发先Android4.4之后okhttp代替了hc,所以将不再讲解hc okhttp的简单使用,主要包含: 一般的get请求 一般的post请求 ...
- OFTP简介
OFTP协议由欧洲汽车标准组织Odette创建,第一个版本于1986年发布,旨在用于当时可用的网络服务,主要是X.25服务.Odette还考虑到VAN(增值网络)服务可能是通信链的一部分.OFTP是汽 ...
- Hadoop:hdfs文件permission denied问题解析
Cron jobs can be scheduled, but fail to write parquet file and seems due to user permission of “yarn ...
- [Z] C#程序中设置全局代理(Global Proxy)
https://www.cnblogs.com/Javi/p/7274268.html 1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1 ...
- HAWQ集成Yarn HA作为资源管理服务
一.第一步当然是配置YARN HA,这在使用ambari管理时很简单,这里不在赘述. 二.建立HAWQ的专用资源队列queue 不要手工编辑scheduler设置,最方便的当然是使用queue man ...
- 【2019年04月22日】A股最便宜的股票
太钢不锈(SZ000825) - 当前便宜指数:170.67 - 滚动扣非市盈率PE:4.37 - 滚动市净率PB:0.98 - 动态年化股息收益率:4.79%- 太钢不锈(SZ000825)的历 ...
- 在windows上搭建SSH服务踩过的坑
前两天安装了windows操作系统,想在windows上做内网穿透,所以就想在windows下启用ssh服务,今天就来讲一下我在搭建ssh服务中遇到的坑. 我显示在Mac下搭建了ssh服务,并且测试通 ...
- PHP 数组转XML 格式
function buildXml( $data, $wrap= 'xml' ){ $str = "<{$wrap}>"; if( is_array( $data ) ...
- SQL Server清空日志以及查看日志大小语句
为了安全起见,使用的时候,先数据备份一遍 作者hongb:SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace) https://www.cnblogs.com ...