LOJ6303:水题——题解

题目来自LOJ。
就记一个公式,设f(n,k)为n!里分解得到的k(k为质数)的个数,则f(n,k)=f(n/k,k)+n/k。
证明很好证,显然我们要的只有k,k^2,k^3……这样的数有n/k个,然后往下递归即可。
至于k为合数,就质因数分解做就行。
k的质因子最多O(logk)个,递归显然是O(logn)的,因此复杂度为O(logklogn),可以线性筛预处理素数通过。
#include<cmath>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=4e6+;
const ll INF=9e18;
ll calc(ll n,ll p){
if(n<p)return ;
return calc(n/p,p)+n/p;
}
bool he[N];
int tot;
ll su[N];
void Euler(int n){
for(int i=;i<=n;++i){
if(!he[i])su[++tot]=i;
for(int j=;j<=tot;++j){
if(i*su[j]>n)break;
he[i*su[j]]=;
if(i%su[j]==)break;
}
}
}
ll n,k;
int main(){
Euler(N-);
while(scanf("%lld%lld",&n,&k)!=EOF){
ll x=INF;
for(int i=;su[i]*su[i]<=k;i++){
if(k%su[i]==){
ll cnt=;
while(k%su[i]==)k/=su[i],cnt++;
x=min(x,calc(n,su[i])/cnt);
}
}
if(k>)x=min(x,calc(n,k));
printf("%lld\n",x);
}
return ;
}
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++
LOJ6303:水题——题解的更多相关文章
- World Finals 2017 (水题题解)
		
看大佬做2017-WF,我这种菜鸡,只能刷刷水题,勉强维持生活. 赛后补补水题. 题目pdf链接,中文的,tls翻译的,链接在这里 个人喜欢在vjudge上面刷题. E Need for Speed ...
 - bzoj usaco 金组水题题解(2)
		
续.....TAT这回不到50题编辑器就崩了.. 这里塞40道吧= = bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 比较经典的最小割?..然而 ...
 - bzoj usaco 金组水题题解(2.5)
		
bzoj 2197: [Usaco2011 Mar]Tree Decoration 树形dp..f[i]表示处理完以i为根的子树的最小时间. 因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是 ...
 - bzoj usaco 金组水题题解(1)
		
UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT. ...
 - Cmd2001的毒瘤水题题解
		
怕不是我再不写题解这题就该成没人做也没人会的千古谜题了...... T1: 仔细分析题面,发现相同就是广义SAM上节点相同,相似就是广义SAM上为从根到某个点路径的前缀..直接SAM上跑从根开始,每个 ...
 - 2006-2007 ACM-ICPC | POJ3380 POJ3384 POJ3385 水题题解
		
// CF比赛链接:http://codeforces.com/gym/101650 // POJ链接:http://poj.org/searchproblem?field=source&ke ...
 - leetcode水题题解
		
344. Reverse String Write a function that takes a string as input and returns the string reversed. E ...
 - PAT甲题题解-1011. World Cup Betting (20)-误导人的水题。。。
		
题目不严谨啊啊啊啊式子算出来结果是37.975样例输出的是37.98我以为是四舍五入的啊啊啊,所以最后输出的是sum+0.005结果告诉我全部错误啊结果直接保留两位小数就可以了啊啊啊啊 水题也不要这么 ...
 - PAT甲题题解-1012. The Best Rank (25)-排序水题
		
排序,水题因为最后如果一个学生最好的排名有一样的,输出的课程有个优先级A>C>M>E那么按这个优先级顺序进行排序每次排序前先求当前课程的排名然后再与目前最好的排名比较.更新 至于查询 ...
 
随机推荐
- spark  执行架构
			
术语定义 Application:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群 ...
 - python处理dict转json,字符串中存在空格问题,导致url编码时,存在多余字符
			
在进行urlencode转换请求的参数时,一直多出一个空格,导致请求参数不正确,多了一个空格,解决方法一种是将dict中key-value键值对的value直接定义为字符串,另一种是value仍然为字 ...
 - Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven
			
第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/class ...
 - C 计算身高
			
#include <stdio.h> int main(int argc, char **argv) { //输出一句话printf("请分别输入身高的英尺和英寸," ...
 - 【movable-area、movable-view】 可移动区域组件说明
			
movable-area.movable-view 可移动区域组件 原型: <movable-area scale-area="[Boolean]"> <mova ...
 - yarn logs -applicationId命令java版本简单实现
			
import java.io.DataInputStream; import java.io.EOFException; import java.io.FileNotFoundException; i ...
 - poj 2155 (二维树状数组 区间修改 求某点值)
			
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 33682 Accepted: 12194 Descript ...
 - 软件工程第四周作业-PSP
			
psp表格 类别 内容 开始时间 结束时间 中断时间 delta时间 学习 学习C# 10.6下午7:00 10.6下午8:00 - 60min 写代码 写主函数以及一些小的方法 10.7下午2:00 ...
 - SOA是什么为什么要面向服务编程
			
SOA(面向服务的架构),Service-Oriented Architecture,面向服务的体系结构. 也就是以服务为核心的架构.这里需要理解什么是服务. 比如你有一个读取通知的方法: publi ...
 - TCP系列36—窗口管理&流控—10、linux下的异常报文系列接收
			
在这篇文章中我们看一下server端在接收到异常数据系列时的处理,主要目的是通过wireshark示例对这些异常数据系列的处理有一个直观的认识,感兴趣的自行阅读相关代码和协议,这里不再进行详细介绍 在 ...