ACdream 1084 寒假安排(阶乘素因子分解)

题目链接:传送门

分析:

求A(n,m)转化成k进制以后末尾0的个数。对k素因子分解,第i个因子为fac[i],

第i个因子的指数为num[i],然后再对n的对A(n,m)进行素因子分解,设count[i]

代表fac[i]对应的指数,ans = min{count[i]/num[i] }

代码如下:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

const int maxn = 1e6+10;

typedef long long LL;

int pri[maxn],cnt;
bool vis[maxn];
int fac[1000],num;
int Count[1000];
LL sum[maxn];
void init(){
    memset(vis,0,sizeof(vis));
    cnt=0;
    for(int i=2;i<maxn;i++){
        if(!vis[i]){
            pri[cnt++]=i;
            for(int j=i+i;j<maxn;j+=i) vis[j]=1;
        }
    }
}

void getFactor(int x){
    num=0;
    memset(Count,0,sizeof(Count));
    for(int i=0;i<cnt&&pri[i]*pri[i]<=x;i++){
        if(x%pri[i]==0){
            fac[num]=pri[i];
            while(x%pri[i]==0) Count[num]++,x/=pri[i];
            num++;
        }
    }
    if(x>1) fac[num]=x,Count[num++]=1;
}

LL getNum(int n,int p){
    if(n<p) return 0;
    return getNum(n/p,p)+(LL)n/p;
}

int main()
{
    init();
    int t,n,m,k;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d",&n,&m,&k);
        getFactor(k);
        LL ans = 1000000000;
        //for(int i=0;i<num;i++) cout<<Count[i]<<" ";
        //cout<<endl;
        for(int i=0;i<num;i++){
            //cout<<getNum(n,fac[i])<<" "<<getNum(m,fac[i])<<endl;
            sum[i]=getNum(n,fac[i])-getNum(n-m,fac[i]);
            ans=min(sum[i]/Count[i],ans);
        }
        printf("%lld\n",ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-30 08:53:07

ACdream 1084 寒假安排(阶乘素因子分解)的相关文章

Acdream1084 寒假安排 求n!中v因子个数

题目链接:点击打开链接 寒假安排 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Others) SubmitStatistic Next Problem Problem Description 寒假又快要到了,不过对于lzx来说,头疼的事又来了,因为众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行. 假设lzx的后宫团有n个人,寒假共有m天,而每天只能跟一位后宫MM约会,并且由于后宫

HDU 3641 Treasure Hunting(阶乘素因子分解+二分)

题目链接:传送门 题意: 求最小的 ( x! ) = 0 mod (a1^b1*a2^b2...an^bn) 分析: 首先吧a1~an进行素因子分解,然后统计下每个质因子的指数,由于随着x的增大,质因子的个数是逐渐增加的 因此我们可以二分x,对x!进行素因子分解判断是否满足条件,然后求出最小的就可以了. 代码如下: #include <iostream> #include <cstring> #include <algorithm> #include <cstdi

51nod 1189 阶乘分数(阶乘素因子分解)

题目链接:传送门 分析: 1/n! = 1/x +1/y ==>  n! * (x + y) = x * y ==>  n!^2 = (x - n!)*(y - n!) ==>  a = b * c ,a = n!^2 ,b = x - n! ,c = y - n! 因此题目就转化成求a的约数的问题了,然后对a进行素 因子分解就可以了,统计的时候记得去重. 代码如下: #include <iostream> #include <cstring> #include

2019-2020寒假计划(待续)

书单: <内向思考> 豆瓣: 独处是一种心境,一个可以心无旁骛地内向思考的空间,一种将头脑和灵魂结合在清晰的信念当中的力量.然而随着手持设备等媒介的普及,让我们被爆炸的信息和他人的想法占据,我们完全没有意识到,我们正渐渐失去独处的时刻. 运用独处,忍受孤独,内向思考,是每一位追求卓越者都须面临的课题,而内向思考所带来的自我空间和时间,将使你思维沉淀,更具创意和爆发力. 雷蒙德·凯特利奇和迈克尔·欧文用历史故事和深度分析,向我们解释了独处怎样提高逻辑思维,激发创造力,掌控情绪,以及产生克服困难和

【大二上寒假充电计划】

1.寒假安排? 看算法的书 刷csp试题 刷力扣算法题 学会自己造轮子 通关下载的游戏 动笔写自传记录在博客上 动笔写与女朋友的相恋过程 丰富自己的博客 网上冲浪 2.时间安排?? 时间 安排 --8:00 起床 8:00--9:00 洗漱吃东西计划一天的安排 9:00--11:00 看书写文章 11:00--12:00 写自传 --2:30 睡觉 3:00--6:00 刷csp力扣算法题写博客 --9:00 看视频网课 9:00-- 充电或者娱乐 --2:00 睡觉 3.说明?? 正式开始时间

[个人][AFO] OI回忆录 The End

前言 微微颤抖的双手敲击键盘,身处从长沙飞驰的高铁,返回家乡. 我知道终将离别,但我不知道离别到来的如此之快.内心有些怅惘,微微的失落,却是又无可奈何. 没有后悔,没有怨念,有的只是一丝丝不舍,舍不得的却是太多. 是时候做一个完结了,结束,也就意味着一个新的开始. 初识OI 是的,两年前初识OI,我还是一个不谙世事的少年,带着对未来的憧憬,带着对高中的期待,踏入这所全国著名的中学. 缘起,卓越之旅理科夏令营. 我还记得营服背后那句话 "给理想一点时间" 当时并不知道什么叫做竞赛,以为只

对自己寒假的安排

这学期真是没有想到,会这么的累,会遇到这么奇葩的老师,永生难忘啊... 天天熬夜,各种大作业,好不容易能完了大作业,考试就来了,总之计划赶不上变化!!!啊啊... 好了,现在要把学期的东西总结下,好多啊,慢慢来,不能懒,以这篇博文为证,告别懒床的自己,歇了快10天啦!!再歇下去,就要开学啦!!! 1.把这学期学的东西进行总结,争取在2周之内总结完. 2.每周至少写两篇博文,把项目中的经验及时总结.长期有效. 3.把c++再看一遍. 4.总结常用算法. 5.复习一遍数据结构. 6.把数据库的高级搜

《对象程序设计》课程 课程设计、考试安排 及 教师建议

通知 (1)课程设计时间 第18周周一-周五上午,软件一室.(有兴趣的同学下午也可以在里面,电脑很多,下午是网络131班课程设计时间) 课程设计题目,老师将于下周(16周)发给大家(公布在CSDN博客 及 通知学委黎文),请大家提前准备. (2)考试时间 第18周周三下午(计划),请大家好好复习,开卷考试,主要考察大家对基础的掌握程度.杜绝作弊(老师从这个学期开始会严抓考试纪律,发现第一个作弊的同学将没收考卷,第二个报送到教务处,请大家理解). (3)老师工作时间 老师已经在湛江,除短暂外出学习

寒假开学第一天

 伴随着短暂而又漫长的寒假的结束,我们迎来了寒假开始的第一天,在开学之际难免有点浮躁的,但是这都不是事啦,我要面对的还有很多很多了,所以我要尽可能早得将心态给调整过来,重新回到正途中,绝对不会让之前的努力白费的,也绝对不会让我最重要的人和关心我的人失望的,在这里也同样希望和我一样刚开学的友友们都要尽快的调整心态,好好学习,早日学有所成,加油加油哈! 在开学之际本来的任务安排是自由复习,但是老师看着同学们浮躁的心态,没有人能坐住的都是各个东倒西歪的,所以老师也坐不住了,他便开始带领我们一起复习,首