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

题目

Description

Input

第一行有一个正整数T,表示测试数据的组数。

接下来的T行,每行输入两个十进制整数n和base。

Output

对于每组数据,输出一个十进制整数,表示在base进制下,n!结尾的零的个数。

Sample Input

2

10 10

10 2

Sample Output

2

8

Data Constraint

对于20%的数据,n<=20,base<=16

对于50%的数据,n<=10^9,base<=10^5

对于100%的数据,1<=T<=50,0<=n<=10^18,2<=base<=10^12

题解

题意

给出\(n\)和\(base\),求\(n\)的阶乘在\(base\)进制下末尾0的个数

分析

很显然可以先将\(base\)质因数分解

将\(base\)拆成\(p1^{k1}*p2^{k2}*……\)的形式

记录底数和指数

然后对于每个质数

将\(n\)一直除以\(p\),把每次的商加起来

除以指数,取个最小值即为答案

Code

#include<bits/stdc++.h>
#define rg register
#define MAX 1000000
#define inf 999999999999999
using namespace std;
long long t,n,m,i,x,num,sum,ans,prime[1000005],tot[1000005];
bool b[1000005];
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
memset(b,true,sizeof(b));
b[1]=false;
for (rg long long i=2;i<=MAX;i++)
for (rg long long j=2;i*j<=MAX;j++)
b[i*j]=false;
scanf("%lld",&t);
while (t--)
{
scanf("%lld%lld",&n,&m);
if (n==0)
{
printf("0\n");
continue;
}
num=0;
memset(prime,0,sizeof(prime));
memset(tot,0,sizeof(tot));
for (rg long long i=2;i*i<=m;i++)
{
if (b[i]==true&&m%i==0)
{
num++;
prime[num]=i;
while (m%i==0)
{
tot[num]++;
m/=i;
}
}
}
if (m>1)
{
num++;
prime[num]=m;
tot[num]=1;
}
ans=inf;
for (rg long long i=1;i<=num;i++)
{
x=n;
sum=0;
while (x)
{
sum+=x/prime[i];
x/=prime[i];
}
sum/=tot[i];
ans=min(ans,sum);
}
printf("%lld\n",ans);
}
return 0;
}

【GDKOI2014】JZOJ2020年8月13日提高组T1 阶乘的更多相关文章

  1. 【GDKOI2014】JZOJ2020年8月13日提高组T4 内存分配

    [GDKOI2014]JZOJ2020年8月13日提高组T4 内存分配 题目 Description Input Output 输出m行,每行一个整数,代表输入中每次程序变化后系统所需要的空闲内存单位 ...

  2. 【GDKOI2014】JZOJ2020年8月13日提高组T3 壕壕的寒假作业

    [GDKOI2014]JZOJ2020年8月13日提高组T3 壕壕的寒假作业 题目 Description Input Output 输出n行.第i行输出两个整数,分别表示第i份作业最早完成的时刻以及 ...

  3. 【GDKOI2014】JZOJ2020年8月13日提高组T2 石油储备计划

    [GDKOI2014]JZOJ2020年8月13日提高组T2 石油储备计划 题目 Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态 ...

  4. JZOJ2020年8月13日提高组反思

    JZOJ2020年8月13日提高组反思 T1 打了3h+,然后自己的小数据都没过 果断选择交对拍的暴力 下次还是注意时间吧 T2 一下三题都没时间打了 看了题目觉得特别烦人(有式子) 再看发现式子类似 ...

  5. JZOJ2020年8月11日提高组T1 密码

    JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...

  6. 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底

    [五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...

  7. 【GDOI2007】JZOJ2020年8月10日提高组T1 夏娜的菠萝包

    [GDOI2007]JZOJ2020年8月10日提高组T1 夏娜的菠萝包 题目 Description 夏娜很喜欢吃菠萝包,她的经纪人RC每半个月就要为她安排接下来的菠萝包计划.今天是7月份,RC又要 ...

  8. 【NOIP2012模拟8.7】JZOJ2020年8月8日提高组T1 奶牛编号

    [NOIP2012模拟8.7]JZOJ2020年8月8日提高组T1 奶牛编号 题目 作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛. 然而,他有点迷信,标识奶牛用的二进制数字 ...

  9. 【佛山市选2013】JZOJ2020年8月7日提高组T1 回文子序列

    [佛山市选2013]JZOJ2020年8月7日提高组T1 回文子序列 题目 描述 回文序列是指左右对称的序列.例如1 2 3 2 1是回文序列,但是1 2 3 2 2就不是.我们会给定一个N×M的矩阵 ...

随机推荐

  1. 【持续更新】Tomcat低级错误

    0(模板) 所犯错误: 现象: 报错内容: 1 所犯错误: 声明@Webservlet中未加"/"符号: 现象: 能够Connected to server,但是代码报错,且无法顺 ...

  2. 快速傅里叶变换学习笔记(FFT)

    什么是FFT FFT是用来快速计算两个多项式相乘的一种算法. 如果我们暴力计算两个多项式相乘,复杂度必然是\(O(n^2)\)的,而FFT可以将复杂度降至\(O(nlogn)\) 如何FFT 要学习F ...

  3. POJ 2432

    \(\mathbf{POJ\;2432}\)题解 题意 给出圆上的\(N\)个点,每个点有一个经度(大于\(0\)小于\(360\)):再给出\(M\)条双向边,保证边\(x y\)仅会沿圆上较短的弧 ...

  4. XJOI 夏令营501-511NOIP训练14 砍树(2)

    小A是小B家的园丁.小B的家里有n棵树,第i棵树的横坐标为i.一天,小B交给小A一个任务,让他降低自己家中的某些树木的高度.这个任务对小A来说十分简单,因为他有一把极其锋利的斧头和一门独门砍树秘籍,能 ...

  5. 服务网格istio概念应知应会

    一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...

  6. Linux 下 GCC 的使用

    0 运行环境 本机系统:Windows 7 虚拟机软件:Oracle VM VirtualBox 6 虚拟机系统:CentOS 7 1 GCC 简介 GCC 是 GUN Compiler Collec ...

  7. [阿里DIN]从模型源码梳理TensorFlow的形状相关操作

    [阿里DIN]从模型源码梳理TensorFlow的形状相关操作 目录 [阿里DIN]从模型源码梳理TensorFlow的形状相关操作 0x00 摘要 0x01 reduce_sum 1.1 reduc ...

  8. 激情的来源 Imagine how much you love it !

    激情来自哪里?我想可能我找到了,精髓就在那个标题! 想象你有多么爱它!你就会爱上他,想象你有多么喜欢某一个东西,你很有可能就喜欢上他,着手去了解他,接触他. 如果带着这种想象状态的激情,工作和学习会有 ...

  9. MongoDB基础教程(安装、操作、配置)

    MongoDB 下载安装 简易安装 # redhat, centOS sudo yum install -y mongodb # debian, ubuntu sudo apt install -y ...

  10. laravel5.5 如何创建Facades并使用

    laravel Facades概念略,自行百度. 如何创建Facades使用步骤1. 创建一个php文件,App\Utils\SmsSend.php.<?php namespace App\Ut ...