题目

求十进制 \(n!\) 在 \(m\) 进制下末尾 \(0\) 的个数

分析

签到题

只要看 \(n!\) 有多少个 \(m\) 的倍数就好了

考虑分解 \(m\) 的质因子

然后根号计算每个因子在 \(n!\) 中有多少个

取能取到的最小值就行了

\(Code\)

#include<cstdio>
using namespace std;
typedef long long LL; const int N = 1e6 + 10;
int vis[N] , pr[N] , tot , cnt;
LL zhi[N] , hav[N] , num[N]; inline void getprime()
{
vis[1] = 1;
for(register int i = 2; i <= N - 5; i++)
{
if (!vis[i]) pr[++tot] = i;
for(register int j = 1; j <= tot && i * pr[j] <= N - 5; j++)
{
vis[i * pr[j]] = 1;
if (i % pr[j] == 0) break;
}
}
} int main()
{
getprime();
int T; LL n , m;
scanf("%d" , &T);
for(; T; T--)
{
cnt = 0;
scanf("%lld%lld" , &n , &m);
for(register int i = 1; i <= tot; i++)
if (m % pr[i] == 0)
{
num[++cnt] = pr[i] , zhi[cnt] = 0;
while (m % pr[i] == 0) zhi[cnt]++ , m /= pr[i];
}
if (m != 1 && m) num[++cnt] = m , zhi[cnt] = 1;
LL ans = 9e18;
for(register int i = 1; i <= cnt; i++)
{
LL s = num[i];
hav[i] = 0;
while (n >= s)
{
hav[i] += n / s;
if (s <= n / (LL)num[i]) s = s * (LL)num[i];
else break;
}
if (hav[i] / zhi[i] < ans) ans = hav[i] / zhi[i];
}
printf("%lld\n" , ans == 9e18 ? 0 : ans);
}
}

JZOJ 3566. 【GDKOI2014】阶乘的更多相关文章

  1. JZOJ 5791 阶乘 —— 因数

    题目:https://jzoj.net/senior/#main/show/5791 题意:有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值 ...

  2. 【GDKOI2014】JZOJ2020年8月13日提高组T1 阶乘

    [GDKOI2014]JZOJ2020年8月13日提高组T1 阶乘 题目 Description Input 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和bas ...

  3. JZOJ 5791. 【NOIP2008模拟】阶乘

    5791. [NOIP2008模拟]阶乘 (File IO): input:factorial.in output:factorial.out Time Limits: 1000 ms  Memory ...

  4. [JZOJ 5791] 阶乘

    题意:求一个最小的\(m\),保证\(\prod a[i] * x = m!\) 思路: 考虑\(m!\)里面有多少个东西?? \(m\)个. 且是一个排列. 那么求一个最小的\(m\)使得前面的式子 ...

  5. 【时光回溯】【JZOJ3566】【GDKOI2014】阶乘

    题目描述 输入 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和base. 输出 对于每组数据,输出一个十进制整数,表示在base进制下,n!结尾的零的个数. 样例 ...

  6. jzoj 3567. 【GDKOI2014】石油储备计划

    Problem Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. Data Constraint 对于20%的数据 ...

  7. [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)

    题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...

  8. C语言 · 阶乘计算 · 基础练习

    问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...

  9. Java 计算N阶乘末尾0的个数-LeetCode 172 Factorial Trailing Zeroes

    题目 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...

  10. 关于for循环的几个小练习,例如奇数偶数,阶乘,求和等

    1 .100以内的奇数和偶数 var js = ""; var os = ""; for(var i=1;i<101;i++) { if(i%2 == 0 ...

随机推荐

  1. Python3.9.5安装

    参考教程1:https://www.cnblogs.com/xiaoyanhuo/p/16362875.html 参考教程2:https://www.cnblogs.com/feng18/p/5854 ...

  2. 【Zookeeper】结构、应用、安装部署与参数、客户端命令行操作、API应用、内部原理(选举机制、写数据、监听器)

    一.Zookeeper入门 1.概述 分布式服务管理框架(存储和管理数据) Zookeeper=文件系统+通知机制 2.特点 主从集群 半数以上,正常工作 请求顺序执行 数据更新具有原子性 3.数据结 ...

  3. 【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel

    一.数仓分层介绍 1.实时计算与实时数仓 实时计算实时性高,但无中间结果,导致复用性差 实时数仓基于数据仓库,对数据处理规划.分层,目的是提高数据的复用性 2.电商数仓的分层 ODS:原始日志数据和业 ...

  4. 【每日一题】2021年12月14日-82. 删除排序链表中的重复元素 II

    存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排列的结果链表. 来源:力扣(LeetCo ...

  5. 18V转5V,15V转5V的LDO和DC芯片方案

    18V 转 5V, 15V 转 5V 的 LDO:芯片的选择,特别是输入电压,在低电平 5V 以下的,基本上都是接近也可以.但是 5V 以上,如现在的 18V 和 15 的话,就不一样了.我们需要在选 ...

  6. ArcObjects SDK开发 017 在ArcObject SDK 中使用Toolbox

    1.Geoprocessor和IGPProcess Geoprocessor是ArcObjects SDK中定义Tool执行器.IGPProcess接口是ArcObjects SDK中定义的ArcTo ...

  7. Redis的数据复制

    介绍 Redis 的复制 Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作 同步操作用于,将从服务器的数据库状态更新至主服务器当前所处的数据库状态: ...

  8. vivo 游戏中心低代码平台的提效秘诀

    作者:vivo 互联网服务器团队- Chen Wenyang 本文根据陈文洋老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术 ...

  9. 47.DRF实现分页

    分页Pagination   当我们在PC 或者 App 有大量数据需要展示时,可以对数据进行分页展示.这时就用到了分页功能,分页使得数据更好的展示给用户   比如我们有1W+数据要返回给前端,数据量 ...

  10. 高并发解决方案orleans实践

    开具一张图,展开来聊天.有从单个服务.consul集群和orleans来展开高并发测试一个小小数据库并发实例. 首先介绍下场景,创建一个order,同时去product表里面减掉一个库存.很简单的业务 ...