这题明白的意思就是求n!在b进制下的后缀零的个数。

即最大的n!%(b^k)==0的k的值。我们需要将如果要构成b这个数,肯定是由一个个质因子相乘得到的。我们只需要求出b的质因子,然后分析n!中可以组成一个b的因子由多少个就可以了。

因为b是10的12次方,所以b的质因子某个因子大于了10的6次方,那肯定是质数了,所以我们只需要筛选出10的6次方以内的质因子就可以了,并且记录下每个质因子的基数。

最后是记录n!由多少个b的素因子组成并除以它的基数,取其中的最小值。

n!中有多少个素因子(假设素因子是x),我们只需要算出1到n中所有a*x^b(a<x)的b的总和,我们不必将某个x^b一个个算出来,我们只需要算出(n/x)到(n/x^b)的总和即可。

附上AC代码(感觉写得不怎么样

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<fstream>
using namespace std;
typedef long long ll;
ll prime[];
struct node
{
ll num;
ll data;
} a[];;
bool vis[];
ll b;
ll init()
{
memset(vis,false,sizeof(vis));
ll k=,i;
for(i=; i<=; i++)
{
if(!vis[i])
{
prime[k++]=i;
for(ll j=; i*j<=; j++)
vis[i*j]=true;
}
} return k;
}
int main()
{
ll k,i,j,n,cnt,sum,t=,r,mini;
t=init();//线性筛出质数
while(scanf("%I64d%I64d",&n,&b)!=EOF)
{
cnt=;
sum=;
r=b;
for(i=; i<t&&b!=; i++)
{
if(b%prime[i]==)
{
a[cnt].data=prime[i];
a[cnt].num=;
while(b%prime[i]==)
{
a[cnt].num++;
b/=prime[i];
}
cnt++;
}
}
if(b!=)
a[cnt].data=b,a[cnt++].num=;
b=r;
for(i=; i<cnt; i++)
{
for(j=a[i].data,sum=,r=; j<=n; j*=a[i].data)
{
sum+=(n/j);
if(n/j<a[i].data)//为了防止j发生溢出
break;
}
if(i==)
mini=sum/a[i].num;
else
mini=min(mini,sum/a[i].num); }
printf("%I64d\n",mini); } }

Codeforces Round #538 (Div. 2) CTrailing Loves (or L'oeufs?)的更多相关文章

  1. Codeforces Round #538 (Div. 2) (A-E题解)

    Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...

  2. Codeforces Round #538 (Div. 2) (CF1114)

    Codeforces Round #538 (Div. 2) (CF1114)   今天昨天晚上的cf打的非常惨(仅代表淮中最低水平   先是一路缓慢地才A掉B,C,然后就开始杠D.于是写出了一个O( ...

  3. Codeforces Round #538 (Div. 2)

    目录 Codeforces 1114 A.Got Any Grapes? B.Yet Another Array Partitioning Task C.Trailing Loves (or L'oe ...

  4. 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    ...

  5. Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树

    https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...

  6. Codeforces Round #538 (Div. 2) E 随机数生成

    https://codeforces.com/contest/1114/problem/E 题意 交互题,需要去猜一个乱序的等差数列的首项和公差,你能问两种问题 1. 数列中有没有数比x大 2. 数列 ...

  7. Codeforces Round #538 (Div. 2) C 数论 + 求b进制后缀零

    https://codeforces.com/contest/1114/problem/C 题意 给你一个数n(<=1e8),要你求出n!在b进制下的后缀零个数(b<=1e12) 题解 a ...

  8. 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 ...

  9. Codeforces Round #254 (Div. 2) DZY Loves Chemistry【并查集基础】

    一开始不知道题意是啥意思,迟放进去反应和后放进去反应有什么区别 对于第三组数据不是很懂,为啥312,132的组合是不行的 后来发现这是一道考察并查集的题目 QAQ 怒贴代码: #include < ...

随机推荐

  1. TinkPHP框架学习-01基本知识

    1-----目录结构 2-----访问地址 3-----MVC开发 一 目录结构 |--Application 程序文件夹 |--Common 公共方法函数 |--Home      模块 |也可以自 ...

  2. MySQL复制相关技术的简单总结

    MySQL有很多种复制,至少从概念上来看,传统的主从复制,半同步复制,GTID复制,多线程复制,以及组复制(MGR).咋一看起来很多,各种各样的复制,其实从原理上看,各种复制的原理并无太大的异同.每一 ...

  3. AX2009里调用.NET DLL的效率问题

    经常在AX2009里引用.NET的DLL,因为序列化和反序列化,用.NET的定义的实体方便一些,平时数据量不大,也没觉得有什么问题,今天要把几万条数据从数据库中取出来序列化以后,调用第三方系统的接口, ...

  4. CSS 背景图像 重复图像

    重复图像 background-repeat 属性可以重复图像,这对于小图片来说是福音. background-repeat 属性有6个值: repeat 背景图像在垂直方向和水平方向都重复 repe ...

  5. 项目(一)ftp搭建

    FTP服务 FTP两种模式: 主动模式服务器向客户端敲门,然后客户端开门 被动模式客户端向服务器敲门,然后服务器开门 传输模式:可以是文本模式,也可以是二进制模式,二进制模式更适合传输图片等非文本字符 ...

  6. 云笔记项目-Spring事务学习-传播NEVER

    接下来测试事务传播属性NEVER Service层 Service层中设置事务传播属性都为NEVER. LayerT层代码 package LayerT; import javax.annotatio ...

  7. PHP拦截器之__set()与__get()的理解与使用方法

    “一般来说,总是把类的属性定义为private,这更符合现实的逻辑.   但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值 ...

  8. PHP : MySQLi【面向过程】操作数据库【 连接、建库、建表、增、删、改、查、关闭】

    <?php /** *数据库操作关键函数 *mysql_connect:连接数据 *mysql_error:最后一次sql动作错误信息 *mysqli_query:执行sql语句,增删该查 *m ...

  9. day49 定位布局和过渡动画

    复习 1.盒子在父级水平居中 margin: 0 auto; 2.文本样式操作 color: red; text-align: center; font: 900 30px/200px "S ...

  10. model 字段参数 choice

    class Banner(NewsBase): ''' 轮播图 ''' PRI_CHOICES = [ # 优先级的限制选择范围 (1,'第一级'), (2,'第二级'), (3,'第三级'), (4 ...