zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    hdu 4577 X-Boxes 大数
    hdu 4576 Robot 概率DP
    将IP地址转化为整数
    MyISAM压缩表
    yii2 模态框
    MySQL数据库设计
    foreach循环赋值问题
    实用的网站
    判断链接地址是否有效
    tp5获取配置文件信息
  • 原文地址:https://www.cnblogs.com/VIrtu0s0/p/10515987.html
Copyright © 2011-2022 走看看