CF#538 C - Trailing Loves (or L'oeufs?) /// 分解质因数
题目大意:
求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?) /// 分解质因数的更多相关文章
- 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 ...
- CF 1114 C. Trailing Loves (or L'oeufs?)
C. Trailing Loves (or L'oeufs?) 链接 题意: 问n!化成b进制后,末尾的0的个数. 分析: 考虑十进制的时候怎么求的,类比一下. 十进制转化b进制的过程中是不断mod ...
- C. Trailing Loves (or L'oeufs?) (质因数分解)
C. Trailing Loves (or L'oeufs?) 题目传送门 题意: 求n!在b进制下末尾有多少个0? 思路: 类比与5!在10进制下末尾0的个数是看2和5的个数,那么 原题就是看b进行 ...
- 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 ...
- Trailing Loves (or L'oeufs?)
The number "zero" is called "love" (or "l'oeuf" to be precise, literal ...
- C. Trailing Loves (or L'oeufs?)
题目链接:http://codeforces.com/contest/1114/problem/C 题目大意:给你n和b,让你求n的阶乘,转换成b进制之后,有多少个后置零. 具体思路:首先看n和b,都 ...
- Trailing Loves (or L'oeufs?) CodeForces - 1114C (数论)
大意: 求n!在b进制下末尾0的个数 等价于求n!中有多少因子b, 素数分解一下, 再对求出所有素数的最小因子数就好了 ll n, b; vector<pli> A, res; void ...
- Codeforces - 1114C - Trailing Loves (or L'oeufs?) - 简单数论
https://codeforces.com/contest/1114/problem/C 很有趣的一道数论,很明显是要求能组成多少个基数. 可以分解质因数,然后统计各个质因数的个数. 比如8以内,有 ...
- 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
[链接] 我是链接,点我呀:) [题意] 问你n!的b进制下末尾的0的个数 [题解] 证明:https://blog.csdn.net/qq_40679299/article/details/8116 ...
随机推荐
- jQuery选择器中空格的问题再探究
jQuery选择器的空格问题,看似很小,但是差之毫厘谬以千里,让人很是恼火,<锋利的jQuery>书中有个经典的例子,我这里也拷贝下来,再加点自己的想法 <html> < ...
- 破解Pycharm 2019.2
参考:https://www.cnblogs.com/pig66/p/11432446.html 1.下载补丁文件 https://pan.baidu.com/s/112tS3XjAENIHaJ-aS ...
- 微信小程序の页面路由
微信小程序的页面路由由平台已栈的形式管理. 微信小程序的页面为什么会如此特殊呢,因为可视区域始终只有一个页面. 一.小程序页面的路由方式 小程序页面有6种路由方式:初始化.打开新页面.页面重定向.页面 ...
- stdio - 标准输入输出库函数
SYNOPSIS 总览 #include <stdio.h> FILE *stdin; FILE *stdout; FILE *stderr; DESCRIPTION 描述 标注 I/O ...
- RK3288 控制usb摄像头补光GPIO
正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio, 系统自带GPIO控制驱动: 内核已经自带了通用GPIO驱动,可以直接在用户空间操作 ...
- Codeforces 1169E DP
题意:给你一个长度为n的序列,有q次询问,每次询问给出两个位置x和y(x < y),问是否可从x到达y?可达的定义是:如果存在一个序列(假设长度为k),其中p1 = x, pk = y,并且这个 ...
- 在AndroidStudio2.3.2下JNI开发的详细步骤(转)
转自:http://blog.csdn.net/luhaoying1111/article/details/72468867 安装NDK 在工具栏点击File->Settings->App ...
- 【LeetCode】二分
[475] Heaters [Easy] 给你一排房子,一排加热器.找到能warm所有房子的最小加热器半径. 思路就是对于每个房子,找离它最近的左右两台heater, 分别求距离.温暖这个房子的hea ...
- kindeditor加入方法
1.editor文件夹拷进来 2. editor里jsp子文件夹里找到几个jar拷贝到网站的web-app里的lib下 3. 网页里 head里加个这个 <link rel="sty ...
- shell脚本之用户管理
#!/usr/bin/env bash ############################### # 脚本名称 : userManager.sh # # 脚本功能 : 账号管理 # # 脚本参数 ...