题目背景

数据已修改

SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友。

题目描述

SOL君很喜欢阶乘。而SOL菌很喜欢研究进制。

这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘。

SOL菌表示不服,立刻就要算这个数在k进制表示下末尾0的个数。

但是SOL菌太菜了于是请你帮忙。

输入输出格式

输入格式:

每组输入仅包含一行:两个整数n,k。

输出格式:

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

输入输出样例

输入样例#1:

10 40
输出样例#1:

2

说明

对于20%的数据,n <= 1000000, k = 10

对于另外20%的数据,n <= 20, k <= 36

对于100%的数据,n <= 10^12,k <= 10^12

update

1.一组数据

2.K不会==1

3.现在std没有爆long long

4.对数据有问题联系icy (建议大家不要面向数据编程)

分析:k=10就是一个非常经典的问题,将n!分解质因数,看看有多少个5就可以了.现在考虑k≠10的情况,模拟一下进制转换,就是不断地%k,/k,我们就是要求一开始k能整除n!多少次.

n!,k过大,显然不能直接算,涉及到倍数,我们可以分解一下k,看看k的质因子是不是n!都有,并且n中的次数大于等于k中的次数.假设n!有一个因子p1,次数为b1,它在k中的次数为b2,每做一次除法就是b1-=b2,每次做除法后都必须保证k中的质因子n!都有,并且次数不能小于k中的.能做多少次除法呢?把相同质因子的次数相除,取个min就可以了.

还有一个问题:k可以直接分解质因数,但是n!就非常大了,我们根本算不出来,怎么才能统计k中的每个质因数在n!中出现的次数呢?对于一个质因数p,1~n个数中有n / p个数包含这个质因子,有n / (p ^ 2)个数包含p^2,也就是相当于包含了p.我们求出包含了p^i的个数,最后相加一下就是答案了.因为阶乘嘛,最后乘起来等于指数的相加.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; long long n, k;
long long cnt, p[], tot[], ans = ; void f(long long x)
{
for (long long i = ; i * i <= x; i++)
{
if (x % i == )
{
p[++cnt] = i;
while (x % i == )
{
tot[i]++;
x /= i;
}
}
}
if (x != )
{
p[++cnt] = x;
tot[x]++;
}
} long long cal(long long x, long long y)
{
//printf("%lld %lld\n", x, y);
if (y > x)
return ;
return x / y + cal(x / y, y);
} int main()
{
scanf("%lld%lld", &n, &k);
f(k);
for (int i = ; i <= cnt; i++)
ans = min(ans, cal(n, p[i]) / tot[p[i]]);
printf("%lld\n", ans); return ;
}

noip模拟赛 SAC E#1 - 一道中档题 Factorial的更多相关文章

  1. SAC E#1 - 一道中档题 Factorial

    题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SOL菌表示不服 ...

  2. 【洛谷十月月测】 P3927 SAC E#1 - 一道中档题 Factorial

    题目传送门:https://www.luogu.org/problemnew/show/P3927 题目大意:给你两个正整数n,k,求n!在k进制下末尾零的数量. 我们通过简单的数学分析,便可以发现, ...

  3. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial

    [题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...

  4. 洛谷 P3927 SAC E#1 - 一道中档题 Factorial【数论//】

    题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SOL菌表示不服,立刻就要算这个数在k进制表示下末尾0的个数. 但是SOL菌太菜了于是请 ...

  5. 洛谷-P3927 SAC E#1 - 一道中档题 Factorial

    原址 题目背景 数据已修改 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. ...

  6. [洛谷P3927]SAC E#1 - 一道中档题 Factorial

    题目大意:求$n!$在$k(k>1)$进制下末尾0的个数. 解题思路:一个数在十进制转k进制时,我们用短除法来做.容易发现,如果连续整除p个k,则末尾有p个0. 于是问题转化为$n!$能连续整除 ...

  7. (计数器)NOIP模拟赛(神奇的数位DP题。。)

    没有原题传送门.. 手打原题QAQ [问题描述]     一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是00 ...

  8. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  9. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

随机推荐

  1. Java事件处理机制- 事件监听器的四种实现方式

    自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...

  2. Akka源码分析-FSM

    akka还有一个不常使用.但我觉得比较方便的一个模块,那就是FSM(有限状态机).我们知道了akka中Actor模型的具体实现之后,就会发现,Akka的actor可以非常方便的实现FSM.其实在akk ...

  3. setjmp和longjmp函数

    关于setjmp函数和longjmp函数有话要说,是UNIX高级环境变成看到了10.10信号那章用到了,研究一下,这里作为补充. setjmp(jmp_buf env_buf) 函数可以将当前的运行环 ...

  4. windows server 2008 r2 安裝IE11

    https://support.microsoft.com/en-us/help/2847882/prerequisite-updates-for-internet-explorer-11 https ...

  5. DAO模式详解

    DAO模式 数据访问层(DAO): 数据的增.删.改.查操作: 业务逻辑层(service): 业务来往的操作,需要调用数据访问层则调用数据访问层,传递数据: 表现层(UI): 呈现数据,用户交互. ...

  6. Laravel5.1学习笔记18 数据库4 数据填充

    简介 编写数据填充类 使用模型工厂类 调用额外填充类 执行填充 #简介 Laravel includes a simple method of seeding your database with t ...

  7. android黑科技系列——自动注入代码工具icodetools

    一.前言 在前面已经介绍完了 自动给apk中注入日志代码工具icodetools原理了,在那里我们曾经说过其实离真正的可使用价值有点距离,本篇就对这个工具进行一些优化,让其真正意义上开始能工作量产.当 ...

  8. android中textview单行显示,多余的省略

    <TextView android:id="@+id/music_title" android:layout_width="wrap_content" a ...

  9. python认识标识符

    #python标识符 Python在编程的时候,起的名字就叫做标识符,其中变量和常量就是标识符的一种 #命名原则 在python中标识符的命名是有规则的,按正确命名规则命名的可以使用的标示符叫做有效标 ...

  10. The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis

    public class MainActivity extends Activity { protected Button startBrew = null; @Override protected ...