zoukankan      html  css  js  c++  java
  • 【洛谷P3927】SAC E#1

    题目背景

    数据已修改

    SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友。

    题目描述

    SOL君很喜欢阶乘。而SOL菌很喜欢研究进制。

    这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘。

    SOL菌表示不服,立刻就要算这个数在k进制表示下末尾0的个数。

    但是SOL菌太菜了于是请你帮忙。

    输入输出格式

    输入格式:

    每组输入仅包含一行:两个整数n,k。

    输出格式:

    输出一个整数:n!在k进制下后缀0的个数。

    输入输出样例

    输入样例#1:
    10 40
    输出样例#1:
    2

    说明

    对于20%的数据,n <= 1000000, k = 10

    对于另外20%的数据,n <= 20, k <= 36

    对于100%的数据,n <= 10^12,k <= 10^12

    update

    1.一组数据

    2.K不会==1

    3.现在std没有爆long long

    4.对数据有问题联系icy (建议大家不要面向数据编程)

    分析

    知识点:唯一分解定理。

    代码

    本题后来数据变小,就不用那啥定理了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    ll n,k;
    int main()
    {
        while(~scanf("%lld%lld",&n,&k))
        {
            register ll ans=0x7fffffffffffffffll,sum,cnt;
            for(register ll i=2;i*i<=k;++i)
            {
                if(k%i==0)
                {
                    sum=cnt=0;
                    while(k%i==0){k=k/i;++cnt;}
                    for(register ll j=i;j<=n;j*=i)
                    sum+=n/j;
                    ans=min(ans,sum/cnt);
                }
            }
            if(k>1)
            {
                sum=cnt=0;
                for(register ll i=k;i<=n;i*=k) sum+=n/i;
                ans=min(ans,sum);
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    欢迎转载,转载请注明出处!
  • 相关阅读:
    js控制表格隔行变色
    浅谈css的伪元素::after和::before
    CSS 背景色变化 结构化伪类的练习
    css清除浮动的几种方式,哪种最合适?
    怎么去检测浏览器支不支持html5和css3?
    display:flex 布局详解(2)
    css3弹性盒子display:flex
    Referer和空Referer
    不要懒惰,坚持每周总结一篇博客
    比较2个文件的不同处
  • 原文地址:https://www.cnblogs.com/huihao/p/7636068.html
Copyright © 2011-2022 走看看