题面

传送门

分析

我们先考虑n!在10进制下有多少个0

由于10=2*5,

我们考虑n!的分解式中5的指数,答案显然等于\(\frac{n}{5}+\frac{n}{5^2}+\frac{n}{5^3}+\dots\frac{n}{5^k}(\frac{n}{5^k}\geq 1,\frac{n}{5^{k+1}}<1)\)

可以用一个递归函数来计算:

ll f(ll x,ll y){
if(x<y) return 0;
else return x/y+f(x/y,y);
}

由于5的个数显然比2少,0的个数取决于5的个数

对于b进制下的0的个数

我们先把b质因数分解\(b=\prod p^{k_{i}}_{i}\)

对于每个质因数\(p_i\),我们按照递归函数求出n!中\(p_i\)的指数,然后再除以\(k_i\)

由于有指数影响,最大的质因数不一定出现的个数最小,不能像10进制那样直接计算

所以我们把每个质因数的结果取min即可

代码

#include<iostream>
#include<cstdio>
#include<cmath>
#define maxn 1000005
using namespace std;
typedef long long ll;
ll n,base;
ll p[maxn],k[maxn];
int cnt=0;
void divide(ll x){
ll sq=sqrt(x);
ll ans=0;
for(ll i=2;i*i<=x;i++){
if(x%i==0){
p[++cnt]=i;
while(x%i==0){
x/=i;
k[cnt]++;
}
}
}
if(x>1){
p[++cnt]=x;
k[cnt]=1;
}
}
ll f(ll x,ll y){
if(x<y) return 0;
else return x/y+f(x/y,y);
}
ll count(ll n,ll x){
divide(x);
ll ans=0x7fffffffffffffff;
for(int i=1;i<=cnt;i++){
ans=min(ans,f(n,p[i])/k[i]);
}
return ans;
}
int main(){
cin>>n>>base;
cout<<count(n,base);
}

Codeforces 1114C(数论)的更多相关文章

  1. Trailing Loves (or L'oeufs?) CodeForces - 1114C (数论)

    大意: 求n!在b进制下末尾0的个数 等价于求n!中有多少因子b, 素数分解一下, 再对求出所有素数的最小因子数就好了 ll n, b; vector<pli> A, res; void ...

  2. Codeforces - 1114C - Trailing Loves (or L'oeufs?) - 简单数论

    https://codeforces.com/contest/1114/problem/C 很有趣的一道数论,很明显是要求能组成多少个基数. 可以分解质因数,然后统计各个质因数的个数. 比如8以内,有 ...

  3. CodeForces 300C --数论

    A - A Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  4. CodeForces 359D (数论+二分+ST算法)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...

  5. Codeforces 264B 数论+DP

    题目链接:http://codeforces.com/problemset/problem/264/B 代码: #include<cstdio> #include<iostream& ...

  6. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem F (Codeforces 831F) - 数论 - 暴力

    题目传送门 传送门I 传送门II 传送门III 题目大意 求一个满足$d\sum_{i = 1}^{n} \left \lceil \frac{a_i}{d} \right \rceil - \sum ...

  7. codeforces 1114C

    题目连接 : https://codeforces.com/contest/1114/problem/C 题目大意:给一个整数n(1e18>=n>=0),和一个整数k(1e12>=k ...

  8. CodeForces 1202F(数论,整除分块)

    题目 CodeForces 1213G 做法 假设有\(P\)个完整的循环块,假设此时答案为\(K\)(实际答案可能有多种),即每块完整块长度为\(K\),则\(P=\left \lfloor \fr ...

  9. Vasya and Beautiful Arrays CodeForces - 354C (数论,枚举)

    Vasya and Beautiful Arrays CodeForces - 354C Vasya's got a birthday coming up and his mom decided to ...

随机推荐

  1. spring boot 配置文件优先级

    项目中可能存在多个配置文件,那么优先级定义如下: 1.同一目录,application.properties优先级高于application.yml 2.同一目录,config文件夹下的配置文件高于根 ...

  2. 远程连接不上centos的mysql的解决方法

    1.防火墙没有开放3306端口 centos 有两种防火墙 FirewallD和iptables防火墙 centos7 使用的是FirewallD防火墙. 1.FirewallD防火墙开放3306端口 ...

  3. qt如何去掉文件路径最后一个反斜杠的内容

    QString strTemp = “E:\\hell\\word\\detect.txt”   int nIndex = strTemp.lastIndexOf('\\');    strTemp ...

  4. 固定内网ip的方法

    ip最后一位找一个不常用的,比如200之后的,ping不通它就用它. 子网掩码,默认网关保持和原来的一样. DNS要填公司的,网上查的不能用,因为他们是互联网上的.主备:XXXXXX/XX (之前填的 ...

  5. bzoj2669 [cqoi2012]局部极小值 状压DP+容斥

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2669 题解 可以发现一个 \(4\times 7\) 的矩阵中,有局部最小值的点最多有 \(2 ...

  6. linux下安装maven私服nexus

    Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库 ...

  7. JPA @Id 和 @GeneratedValue 注解详解

    JPA @Id 和 @GeneratedValue 注解详解   @Id: @Id 标注用于声明一个实体类的属性映射为数据库的主键列.该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上 ...

  8. boost multi array

    Boost MultiArray is a library that simplifies using arrays with multiple dimensions. 1. #include < ...

  9. 比传统事务快10倍?一张图读懂阿里云全局事务服务GTS

    近日,阿里云全局事务服务GTS正式上线,为微服务架构中的分布式事务提供一站式解决方案.GTS的原理是将分布式事务与具体业务分离,在平台层面开发通用的事务中间件GTS,由事务中间件协调各服务的调用一致性 ...

  10. .Net Core 使用Redis进行数据缓存

    1.运行环境 开发工具:Visual Studio 2017 JDK版本:.NET Core 2.0 项目管理工具:nuget 2.GITHUB地址 https://github.com/nbfujx ...