题目大意:

求n!在b进制下末尾有多少个0

https://blog.csdn.net/qq_40679299/article/details/81167283

一个数在十进制下末尾0的个数取决于10的幂的个数 即 1500=15*10^2 与两个0

在任意进制下也是 即n!在b进制下 n!=a*b^x 那么末尾0的个数就是 x

若b能分解出质因数 b1 b2 b3 ...

那么 a*b^x = a*(b1^x1 * b2^x2 * b3^x3 ... )^x = a*(b1^(x1*x) * b2^(x2*x) * b3^(x3*x) ... )

(x1表示能在b中分解出x1个b1...)

又可化成 A1*(b1^(x1*x)) 或A2*(b2^(x2*x))或 A3*(b3^(x3*x))的形式 即 A*B^X

对于特定的B 通过getcnt()可以求X 对于b1可求得X1 那么x=X1/x1

A的可能值有很多如A1 A2 A2 使得 n!=A*B^X解得的X也有多种

要使它们最终都满足 那么x应该是 X1/x1 X2/x2 X3/x3 ... 中最小的一个

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define mem(i,j) memset(i,j,sizeof(i))
const int mod=1e9+;
const LL maxn=1e18+;
const LL maxm=1e12+;
LL n, b;
LL pri[], ind=;
LL cnt[];
void get_pri(LL n) {
mem(pri,); mem(cnt,);
for(LL i=;i*i<=n;i++) {
while(n%i==)
pri[ind]=i, cnt[ind]++, n=n/i;
if(cnt[ind]) ind++;
}
if(n>) pri[ind]=n, cnt[ind++]=;
} // 分解质因数
LL getcnt(LL p,LL n){
LL res=;
while(n) res+=n/p, n/=p;
return res;
} // n!能分解出res个p
int main()
{
while(~scanf("%I64d%I64d",&n,&b)) {
ind=; get_pri(b); //printf("%d\n",ind);
LL ans=maxn;
for(LL i=;i<ind;i++)
ans=min(ans,getcnt(pri[i],n)/cnt[i]);
printf("%I64d\n",ans);
} return ;
}

CF#538 C - Trailing Loves (or L'oeufs?) /// 分解质因数的更多相关文章

  1. Codeforces Round #538 (Div. 2) C. Trailing Loves (or L'oeufs?) (分解质因数)

    题目:http://codeforces.com/problemset/problem/1114/C 题意:给你n,m,让你求n!换算成m进制的末尾0的个数是多少(1<n<1e18    ...

  2. CF 1114 C. Trailing Loves (or L'oeufs?)

    C. Trailing Loves (or L'oeufs?) 链接 题意: 问n!化成b进制后,末尾的0的个数. 分析: 考虑十进制的时候怎么求的,类比一下. 十进制转化b进制的过程中是不断mod ...

  3. C. Trailing Loves (or L'oeufs?) (质因数分解)

    C. Trailing Loves (or L'oeufs?) 题目传送门 题意: 求n!在b进制下末尾有多少个0? 思路: 类比与5!在10进制下末尾0的个数是看2和5的个数,那么 原题就是看b进行 ...

  4. CF#538(div 2) C. Trailing Loves (or L'oeufs?) 【经典数论 n!的素因子分解】

    任意门:http://codeforces.com/contest/1114/problem/C C. Trailing Loves (or L'oeufs?) time limit per test ...

  5. Trailing Loves (or L'oeufs?)

    The number "zero" is called "love" (or "l'oeuf" to be precise, literal ...

  6. C. Trailing Loves (or L'oeufs?)

    题目链接:http://codeforces.com/contest/1114/problem/C 题目大意:给你n和b,让你求n的阶乘,转换成b进制之后,有多少个后置零. 具体思路:首先看n和b,都 ...

  7. Trailing Loves (or L'oeufs?) CodeForces - 1114C (数论)

    大意: 求n!在b进制下末尾0的个数 等价于求n!中有多少因子b, 素数分解一下, 再对求出所有素数的最小因子数就好了 ll n, b; vector<pli> A, res; void ...

  8. Codeforces - 1114C - Trailing Loves (or L'oeufs?) - 简单数论

    https://codeforces.com/contest/1114/problem/C 很有趣的一道数论,很明显是要求能组成多少个基数. 可以分解质因数,然后统计各个质因数的个数. 比如8以内,有 ...

  9. 【Codeforces 1114C】Trailing Loves (or L'oeufs?)

    [链接] 我是链接,点我呀:) [题意] 问你n!的b进制下末尾的0的个数 [题解] 证明:https://blog.csdn.net/qq_40679299/article/details/8116 ...

随机推荐

  1. for in 的实现

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  2. android 样式和主题

  3. Javascript高级程序设计--读书笔记之理解原型对象

    先上一段代码和关系图 function Person(){} Person.prototype.name = "Nic" Person.prototype.age = 22 Per ...

  4. RemoTing 搭建简单实现

    今天对C# Remoting进行了初步的学习,废话不说... RemotingModel: Talker.cs using System;using System.Collections.Generi ...

  5. Codeforces Round #556 CF1149D Abandoning Roads

    这道题并不简单,要得出几个结论之后才可以做.首先就是根据Kruskal求最小生成树的过程,短边是首选的,那么对于这道题也是,我们先做一次直选短边的最小生成树这样会形成多个联通块,这些联通块内部由短边相 ...

  6. PHP-移除元素

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  7. Dubbox服务的消费方开发

    开发步骤: (1)创建Maven工程(WAR)dubboxdemo-web ,在pom.xml引入依赖 ,同“dubboxdemo-service”工程.区别就是把tomcat插件的运行端口改为808 ...

  8. Dubbo---Multicast 注册中心---xml配置

    1.项目结构(maven项目) 2.dubbotest.pom <?xml version="1.0" encoding="UTF-8"?> < ...

  9. 理解First-Class Functions

    def logger(msg): def log_message(): print('Log:', msg) return log_message # 返回的是函数 log_hi = logger(' ...

  10. VC 串口通讯基本原理,讲的很是详细

    目 录打开串口............................................................................................. ...