题目链接:传送门

题解:

$(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 - 阶乘分解 - [埃筛]的更多相关文章

  1. 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘

    /* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...

  2. 牛客练习赛33 B tokitsukaze and RPG (类埃筛)

    链接:https://ac.nowcoder.com/acm/contest/308/B 来源:牛客网 tokitsukaze and RPG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/ ...

  3. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m

    给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后 ...

  4. luogu1445 [violet]樱花 阶乘分解

    题目大意 求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数. 思路 咱们把式子整理得$$xy-(x+y)N!=0$$.$xy$和$x+y$?貌似可 ...

  5. Acwing 197. 阶乘分解

    给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...

  6. LightOJ 1340 - Story of Tomisu Ghost 阶乘分解素因子

    http://www.lightoj.com/volume_showproblem.php?problem=1340 题意:问n!在b进制下至少有t个后缀零,求最大的b. 思路:很容易想到一个数通过分 ...

  7. LightOJ - 1138 (二分+阶乘分解)

    题意:求阶乘尾部有Q(1 ≤ Q ≤ 108)个0的最小N 分析:如果给出N,然后求N!尾部0的个数的话,直接对N除5分解即可(因为尾部0肯定是由5*2构成,那么而在阶乘种,2的因子个数要比5少,所以 ...

  8. AcWing 197. 阶乘分解 (筛法)打卡

    给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...

  9. POJ 2689 - Prime Distance - [埃筛]

    题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...

随机推荐

  1. c#异常重试机制

    有时候我们碰到程序异常了,想让程序继续重新执行,进行重试,这时候就需要有一个合适的方法来进行操作: 自己写代码控制太麻烦了,也容易出错.这时候当然是站在巨人的肩膀上, https://github.c ...

  2. C# 反射获取控件

    Control control = Controls.Find(]; //object o = control.GetType().GetProperty("PropertyName&quo ...

  3. Python读取本地文档内容并发送邮件

    当需要将本地某个路径下的文档内容读取后并作为邮件正文发送的时候可以参考该文,使用到的模块包括smtplib,email. #! /usr/bin/env python3 # -*- coding:ut ...

  4. Go使用详解

    1.什么是Go keep it simple stupid的编程语言 2.安装 以Ubuntu为例 # 下载安装包 wget https://storage.googleapis.com/golang ...

  5. 隐马尔可夫模型:HMM

    隐马尔可夫模型求解三大问题实例剖析 HMM 模型如图所示: 一.隐马尔可夫模型定义 隐马尔可夫模型由初始概率分布.状态转移概率分布以及观测概率分布确定. 设 Q(图中的q)是所有可能的状态的集合,V( ...

  6. [HDFS Manual] CH2 HDFS Users Guide

    2 HDFS Users Guide 2 HDFS Users Guide 2.1目的 2.2.概述 2.3.先决条件 2.4. Web Interface 2.5. Shell Command 2. ...

  7. 【温暖】文龙回AICODER给老马送锦旗了

    又是一个愉快的周末,AICODER第一批老学员文龙小伙伴.已经工作两个月,而且就业薪资12000+,文龙从之前月薪不足4000,一下子翻了三倍多的工资. 几个月的实习,让文龙掌握了大前端全栈的技术,在 ...

  8. 什么是SPU、SKU、ARPU

    这是一篇存档性笔记,我自己存档一下对这3个词的理解.如果你已经明了了这3个词的意思,请直接忽略之 首先,搞清楚商品与单品的区别.例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时 ...

  9. Zookeeper客户端介绍

    客户端是开发人员使用Zookeeper的主要的途径,以下内容将对Zookeeper的内部原理进行详细的学习和讲解.ZooKeeper的客户端主要有一下几个核心组件组成: Zookeeper:提供客户端 ...

  10. Linux c time模块函数库

    时间模块需要引入time.h头文件 #include <time.h> 1. c获取时间戳 #include <stdio.h> #include <time.h> ...