Codeforces Round #538 (Div. 2) C 数论 + 求b进制后缀零
https://codeforces.com/contest/1114/problem/C
题意
给你一个数n(<=1e8),要你求出n!在b进制下的后缀零个数(b<=1e12)
题解
- a在b进制下的后缀零个数?
\(a=p_1^{x_1}*p_2^{x_2}*p_3^{x_3}...*p_n^{x_n}\),
\(b=q_1^{y_1}*q_2^{y_2}*q_3^{y_3}...*q_n^{y_n}\)
p,q为素因子,后缀零个数为min(floor(\(x_i/y_i\))) - 求p在n!中的个数?
求1~n有多少个数有\(p\),\(p^2\),\(p^3\),...,\(p^k<n\)
for(i=0;i<p.size();i++){
x=p[i];
tp=0;
while(x<=n){
tp+=n/x;
if(n*1.0/x>=p[i])x*=p[i];
else break;
}
ans=min(tp/X[i],ans);
}
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,b,i,ans=0,tp,x;
vector<ll>a;
ll X[100],sz,pr[1000005],num,vi[1000005];
void init(){
for(ll i=2;i<=1e6;i++){
if(!vi[i]){
pr[num++]=i;
for(ll j=0;j<num&&i*pr[j]<=1e6;j++){
vi[pr[j]*i]=1;
if(i%pr[j]==0)break;
}
}
}
}
int main(){
init();
cin>>n>>b;tp=b;
for(i=0;i<num;i++){
if(tp%pr[i]==0){
while(tp%pr[i]==0){
tp/=pr[i];X[sz]++;
}
a.push_back(pr[i]);
sz++;
}
if(tp==1)break;
}
if(tp>1){
a.push_back(tp);
X[sz]++;
}
ans=1e18;
for(i=0;i<a.size();i++){
x=a[i];
tp=0;
while(x<=n){
tp+=n/x;
if(n*1.0/x>=a[i])x*=a[i];
else break;
}
ans=min(tp/X[i],ans);
}
cout<<ans;
}
Codeforces Round #538 (Div. 2) C 数论 + 求b进制后缀零的更多相关文章
- Codeforces Round #538 (Div. 2) (A-E题解)
Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...
- Codeforces Round #538 (Div. 2) (CF1114)
Codeforces Round #538 (Div. 2) (CF1114) 今天昨天晚上的cf打的非常惨(仅代表淮中最低水平 先是一路缓慢地才A掉B,C,然后就开始杠D.于是写出了一个O( ...
- Codeforces Round #538 (Div. 2)
目录 Codeforces 1114 A.Got Any Grapes? B.Yet Another Array Partitioning Task C.Trailing Loves (or L'oe ...
- 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 ...
- Codeforces Round #538 (Div. 2) CTrailing Loves (or L'oeufs?)
这题明白的意思就是求n!在b进制下的后缀零的个数. 即最大的n!%(b^k)==0的k的值.我们需要将如果要构成b这个数,肯定是由一个个质因子相乘得到的.我们只需要求出b的质因子,然后分析n!中可以组 ...
- Codeforces Round #382 Div. 2【数论】
C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...
- Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树
https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...
- Codeforces Round #538 (Div. 2) E 随机数生成
https://codeforces.com/contest/1114/problem/E 题意 交互题,需要去猜一个乱序的等差数列的首项和公差,你能问两种问题 1. 数列中有没有数比x大 2. 数列 ...
- Codeforces Round #538 (Div. 2) D. Flood Fill 【区间dp || LPS (最长回文序列)】
任意门:http://codeforces.com/contest/1114/problem/D D. Flood Fill time limit per test 2 seconds memory ...
随机推荐
- RxJS之转化操作符 ( Angular环境 )
一 map操作符 类似于大家所熟知的 Array.prototype.map 方法,此操作符将投射函数应用于每个值 并且在输出 Observable 中发出投射后的结果. import { Compo ...
- jstl的forEach详解(转)
<c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的 ...
- swift - layer - 渐变色 - CAGradientLayer
1.创建 渐变色 /// 渐变色:默认从上到下 private var gradientLayer: CAGradientLayer = { let g = CAGradientLayer() g.c ...
- Ubuntu 16.04安装JDK并配置环境变量-【小白版】
系统版本:Ubuntu 16.04 JDK版本:jdk1.8.0_121 1.官网下载JDK文件jdk-8u121-linux-x64.tar.gz 我这里下的是最新版,其他版本也可以 2.创建一个目 ...
- 汇编中CMP的作用
假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H.执行的指令是:CMP AX, BX 执行这条指令时,先做用AX中的数减去BX中的数的减法运算.列出二进制运算式子: 0 ...
- js阻止a标签默认事件的几种方法
方法/步骤 疑问 打开编辑器,新建html并加入a标签,如图所示,小编想点击a标签时执行pop函数同时禁止a标签的默认的href跳转,该如何阻止呢? 方法一 要阻止a标签跳转,可以改变href ...
- PHP的网站主要攻击方式有哪些?
1.命令注入(Command Injection) 2.eval注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) 4.跨网站脚本攻击(Cross Site ...
- 解决loadrunner录制页面的乱码问题
以下亲自验证了的:好用. 三步解决loadrunner录制页面的乱码问题 第一步:去lr 的vugen的Tools -> Recoding Options -> Advanced ...
- Luogu 2147 洞穴勘测 - LCT
Solution $LCT$ 打上 $cut$ , $link$ 和 $finroot$ 即可 Code #include<cstdio> #include<cstring> ...
- Luogu 3690 LCT - 模板
推荐几篇比较好的博客: FlashHu 的 讲解比较好 : 传送门 Candy 的 代码~ : 传送门 以及神犇Angel_Kitty的 学习笔记: 传送门 Code V 模板 #include< ...