码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-13 00:34:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:bit   void   close   view   scanf   最小   for   open   eve   

C. Trailing Loves (or L‘oeufs?) 

题目传送门

题意:

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


思路:

  类比与5!在10进制下末尾0的个数是看2和5的个数,那么

原题就是看b进行质因数分解后,每个因数个数的最小值

代码:

技术图片
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 1000005
ll pri[N];
ll cnt[N];
ll tot;
void getpri(ll x)
{
    memset(cnt,0,sizeof(cnt));
    memset(pri,0,sizeof(pri));
    for(ll i=2;i*i<=x;i++)
    {
        while(x%i==0)
        {
            pri[tot]=i;
            cnt[tot]++;
            x/=i;
        }
        if(cnt[tot]) tot++;
    }
    if(x>1) pri[tot]=x,cnt[tot++]++;
}
ll solve(ll x,ll p)
{
    ll res=0;
    while(x)
    {
        res+=x/p;
        x/=p;
    }
    return res;
}
int main()
{
    ll n,b;
    while(~scanf("%lld %lld",&n,&b)){
            tot=0;
        getpri(b);
        ll maxn=1e18;
        /*for(int i=0;i<tot;i++)
            cout<<pri[i]<<" "<<cnt[i]<<endl;*/
        for(ll i=0;i<tot;i++)
        {
            maxn=min(maxn,solve(n,pri[i])/cnt[i]);
        }
        printf("%lld\n",maxn);
    }

    return 0;
}
View Code

 

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

标签:bit   void   close   view   scanf   最小   for   open   eve   

原文地址:https://www.cnblogs.com/zhgyki/p/10367492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!