zoukankan      html  css  js  c++  java
  • bzoj3000 Big Number

    Description

    给你两个整数N和K,要求你输出N!的K进制的位数。

    Input

    有多组输入数据,每组输入数据各一行,每行两个数——N,K

    Output

           每行一个数为输出结果。

    Sample Input

    2 5

    2 10

    10 10

    100 200



    Sample Output

    1

    1

    7

    69




    对于100%的数据,有2≤N≤2^31, 2≤K≤200,数据组数T≤200。

    唉神数论啊

    用到一个Stirling公式


    然后各种乱搞推公式啦T T

    orz神犇们

    #include<cstdio>
    #include<cmath>
    using namespace std;
    const long double pi=acos(-1.0),e=exp(1),eps=1e-10;
    long double log(long double a,long double b){return log(a)/log(b);}
    int n,k;
    int main()
    {
    	while (scanf("%d%d",&n,&k)!=EOF)
    	if (n<=10000)
    	{
    		double ans=0.0;
    		for (int i=1;i<=n;i++)ans+=log(i);
    		ans/=log(k);
    		ans=ceil(ans+eps);
    		printf("%.0lf
    ",ans);
    	}else printf("%lld
    ",(long long)(0.5*log(2*pi*n,k)+n*log(n,k)-n*log(e,k))+1);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    django orm(2)
    django orm操作(1)
    Django 模型层(2)
    Django 模型层(1)
    6 Django的视图层
    Django的模板层
    可视化工具Navicat的使用
    adminlte html汉化
    nodejs安装package
    jquery验证框架validate的使用
  • 原文地址:https://www.cnblogs.com/zhber/p/4036006.html
Copyright © 2011-2022 走看看