JZOJ 3566. 【GDKOI2014】阶乘
题目
求十进制 \(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】阶乘的更多相关文章
- JZOJ 5791 阶乘 —— 因数
题目:https://jzoj.net/senior/#main/show/5791 题意:有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值 ...
- 【GDKOI2014】JZOJ2020年8月13日提高组T1 阶乘
[GDKOI2014]JZOJ2020年8月13日提高组T1 阶乘 题目 Description Input 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和bas ...
- JZOJ 5791. 【NOIP2008模拟】阶乘
5791. [NOIP2008模拟]阶乘 (File IO): input:factorial.in output:factorial.out Time Limits: 1000 ms Memory ...
- [JZOJ 5791] 阶乘
题意:求一个最小的\(m\),保证\(\prod a[i] * x = m!\) 思路: 考虑\(m!\)里面有多少个东西?? \(m\)个. 且是一个排列. 那么求一个最小的\(m\)使得前面的式子 ...
- 【时光回溯】【JZOJ3566】【GDKOI2014】阶乘
题目描述 输入 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和base. 输出 对于每组数据,输出一个十进制整数,表示在base进制下,n!结尾的零的个数. 样例 ...
- jzoj 3567. 【GDKOI2014】石油储备计划
Problem Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. Data Constraint 对于20%的数据 ...
- [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_ ...
- C语言 · 阶乘计算 · 基础练习
问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...
- 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 ...
- 关于for循环的几个小练习,例如奇数偶数,阶乘,求和等
1 .100以内的奇数和偶数 var js = ""; var os = ""; for(var i=1;i<101;i++) { if(i%2 == 0 ...
随机推荐
- 关于咪咕视频的m3u8再次解析
软件和源码 前言 之前写过一片文章: 关于突破咪咕视频付费限制的研究, 但是后来我发现评论说已经不能用了,我知道肯定是api修改了,写这种东西就是这样,不一定什么时候就变化了,然后就用不了了,我懒得继 ...
- python-封装、继承、多态
封装 面向对象编程有三大特性:封装.继承.多态,其中最重要的一个特性就是封装.封装指的就是把数据与功能都整合到一起,针对封装到对象或者类中的属性,我们还可以严格控制对它们的访问,分两步实现:隐藏与开放 ...
- 5:Echarts数据可视化-多条曲线、多个子图、TreeMap类似盒图、树形图、热力图、词云
〇.目标 本次实验主要基于Echarts的Python库实现高维数据.网络和层次化数据.时空数据和文本数据的可视化,掌握可视化的操作流程和相关库的使用. 一.绘制平行坐标系 平行坐标是信息可视化的一种 ...
- RequestMappingHandlerMapping请求地址映射的初始化流程!
之前的文章里,介绍了DispatcherSerlvet处理请求的流程. 其中一个核心的步骤是:请求地址映射,即根据request获取对应的HandlerExcecutionChain. 为了后续的请求 ...
- SQLMap入门——获取数据库中的表名
查询完数据库后,查询指定数据库中所有的表名 python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id=1 -D xssplatf ...
- day08-功能实现07
家居网购项目实现07 以下皆为部分代码,详见 https://github.com/liyuelian/furniture_mall.git 16.功能15-会员显示登录名 16.1需求分析/图解 会 ...
- 分享一个自己在用的.net 中mysql事务控制类(支持多条sql,参数化,自定义判断条件,错误点返回等)
1)首先看下事务控制器. using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using Sys ...
- 第k个数【模板题】
第k个数 给定一个长度为 \(n\) 的整数数列,以及一个整数 \(k\),请用快速选择算法求出数列从小到大排序后的第 \(k\) 个数. 输入格式 第一行包含两个整数 \(n\) 和 \(k\). ...
- [cocos2d-x]关于Action
Action的分类 第一种:FiniteTimeAction类:有限时间的动作类 第二种:Follow类:节点跟随另一种节点的类 第三种:Speed类:节点执行速度类 第一种有限时间的动作类又分为瞬时 ...
- ABC238E Range Sums
简要题意 有一个长度为 \(N\) 的序列 \(a\),你知道 \(Q\) 个区间的和.求是否可以知道 \([1,n]\) 的和. \(1 \leq N,Q \leq 2 \times 10^5\) ...