首页 > 其他 > 详细

【Codeforces 1114C】Trailing Loves (or L'oeufs?)

时间:2019-02-11 11:44:10      阅读:246      评论:0      收藏:0      [点我收藏+]

【链接】 我是链接,点我呀:)
【题意】


问你n!的b进制下末尾的0的个数

【题解】


证明:https://blog.csdn.net/qq_40679299/article/details/81167283
这题的话m比较大,
做个质因数分解就ok>_<
算n!有多少个x因子的话
以5为例子 (n=25)
25 20 15 10 5
把他们都除5
5 4 3 2 1
然后再除5
1
所以总共有6个
转换成代码就是
while(n>0){
ans+=n/5;
n = n/5;
}

【代码】

import java.io.*;
import java.util.*;

public class Main {
    
    static int N = (int)1e6;
    static InputReader in;
    static PrintWriter out;
        
    public static void main(String[] args) throws IOException{
        //InputStream ins = new FileInputStream("E:\\rush.txt");
        InputStream ins = System.in;
        in = new InputReader(ins);
        out = new PrintWriter(System.out);
        //code start from here
        new Task().solve(in, out);
        out.close();
    }
    
    static class Task{
        public void solve(InputReader in,PrintWriter out) {
            long n,m;
            n = in.nextLong();m = in.nextLong();
            ArrayList a = new ArrayList<>();
            ArrayList d = new ArrayList<>();
            for (long i = 2;i*i<=m;i++) {
                if (m%i==0) {
                    a.add(i);
                    int cnt1 = 0;
                    while (m%i==0) {
                        m/=i;
                        cnt1++;
                    }
                    d.add(cnt1);
                }
            }
            if (m>1) {
                a.add(m);
                d.add(1);
            }
            long ans = (long)1e18 + 100;
            for (int i = 0;i <(int)a.size();i++) {
                long ai = (long) a.get(i);
                int pi = (int) d.get(i);
                long nn = n;
                long res = 0;
                while (nn>0) {
                    res+=nn/ai;
                    nn/=ai;
                }
                ans = Math.min(ans, res/pi);
            }
            out.print(ans);
        }
    }

    

    static class InputReader{
        public BufferedReader br;
        public StringTokenizer tokenizer;
        
        public InputReader(InputStream ins) {
            br = new BufferedReader(new InputStreamReader(ins));
            tokenizer = null;
        }
        
        public String next(){
            while (tokenizer==null || !tokenizer.hasMoreTokens()) {
                try {
                tokenizer = new StringTokenizer(br.readLine());
                }catch(IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
        
        public long nextLong() {
            return Long.parseLong(next());
        }
        
        public int nextInt() {
            return Integer.parseInt(next());
        }
    }
}

【Codeforces 1114C】Trailing Loves (or L'oeufs?)

原文:https://www.cnblogs.com/AWCXV/p/10361188.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!