别人可以眼杀我却研究了一个小时看了题解才懂的数学题

输入: n, k

输出: n!在k进制下后缀0的个数

n,k <= 10^12

将 n! 表示成 x×2y5z 的形式,其中 x mod 2 != 0,x mod 5 != 0,则答案为 min(y,z)。

所以只需要统计 n! 的质因数分解的结果中,2 和 5 的次数 即可。

由于数的乘法对应的是指数的加法,所以求出 [1,n] 中所有 数的质因数分解的结果中,2 和 5 的次数,再作和即可。

求一个数 x 中有多少个 p,可以在 O(logx) 时间内完成。

总时间复杂度 O(nlogn)。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll oo = 1e18;
const int N = 100010; int an;
ll n, k, ans;
ll a[N], b[N], p[N]; template <typename T>
T read(){
T N(0), F(1);
char C = getchar();
for(; !isdigit(C); C = getchar()) if(C == '-') F = -1;
for(; isdigit(C); C = getchar()) N = N*10 + C-48;
return N*F;
} int main(){
n = read<ll>(); k = read<ll>(); for(ll i = 2; i*i <= k; i++){
if(k % i == 0){
a[++an] = i;
while(k%i == 0){
p[an]++;
k /= i;
}
}
}
if(k > 1){
a[++an] = k;
p[an] = 1;
} ans = oo;
for(int i = 1; i <= an; i++){
ll tmp = a[i];
while(tmp <= n){
b[i] += n / tmp;
tmp *= a[i];
}
ans = min(ans, b[i]/p[i]);
}
printf("%lld\n", ans); return 0;
}

最新文章

  1. Secure Digital
  2. Objective-c 动画
  3. 文字的多列布局--column
  4. 魅族MX3\MX2 在MTP模式下恢复手机误删数据教程
  5. def文件格式
  6. 最长公共上升子序列(LICS) 模板
  7. [物理学与PDEs]书中的错误指出
  8. Autofac 之 基于 Castle DynamicProxy2 的 Interceptor 功能
  9. LeeCode-Pow(x, n)
  10. 串的模式匹配——Brute-Force算法
  11. 列举一些常见的Python HTTP服务器
  12. jQuery.reveal弹出层
  13. (转载,但不知道谁原创)获取SPRING 代理对象的真实实例,可以反射私有方法,便于测试
  14. 强大的jQGrid的傻瓜式使用方法。以及一些注意事项,备有相应的引入文件。
  15. 解决关于 vue项目中 点击按钮路由多了个问号
  16. 使用VSTS的Git进行版本控制(二)——提交保存工作
  17. 关于xampp中无法启动mysql,Attempting to start MySQL service...的解决办法!!
  18. luogu5019 [NOIp2018]铺设道路 (贪心)
  19. vue项目导入外部css样式和js文件
  20. HDU 2191 - 单调队列优化多重背包

热门文章

  1. Docker: 基础介绍 [一]
  2. Entity Framework入门教程(2)---EF工作流程
  3. deepin 下安装goland中文字体显示全是方块
  4. LCA(ST倍增)
  5. 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
  6. mvc 在弹出框中实现文件下载
  7. APPLE-SA-2019-3-25-1 iOS 12.2
  8. 获取reporting services导出pdf的url的方法
  9. python向ftp上传文件,解决中文问题
  10. ES进阶--02