3000: Big Number

来源:互联网 发布:国外域名代理商 编辑:程序博客网 时间:2024/05/17 05:01

题目链接

题目大意:求出N!的K进制的位数

题解:给数学跪了。题解

我的收获:Orz

#include <cmath>  #include <cstdio>  #include <cstring>  #include <iostream>  #include <algorithm>  using namespace std;  const double pi=acos(-1.0),e=exp(1.0);  int n,k;  int main()  {      int i;      while(~scanf("%d%d",&n,&k) )      {          if(n<=100)          {              double temp=0;              for(i=2;i<=n;i++)                  temp+=log(i);              temp/=log(k);              cout<<(long long)floor(temp+1e-7)+1ll<<endl;          }          else         {              double temp=log(2*pi*n)/log(k)/2+n*log(n/e)/log(k);              cout<<(long long)floor(temp+1e-7)+1ll<<endl;          }      }      return 0;  }  
原创粉丝点击