bzoj3000 Big Number
来源:互联网 发布:vx什么软件 编辑:程序博客网 时间:2024/06/07 00:14
题目
首先,我们都知道,一个数n有几位数的公式就是lg(n)+1(十进制下)。那么k进制下就为logk(n)+1了。
那么这道题就可以即为logk(n!)=log(1)+log(2)+……+log(n)了。
但是这样是O(n)的,做不动。
这个时候,就要使用神奇的公式了。
当然不会证明啦。
但是,这样就可以根据对数运算法则展开了。
最后公式就很好推了。
#include<bits/stdc++.h>#define eps 1e-10#define pi acos(-1.0)#define e exp(1)using namespace std;int n,k;inline double log(double a,double b){ return log(a)/log(b);} int main(){ freopen("in.txt","r",stdin); 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\n",ans); }else printf("%lld\n",(long long)(0.5*log(2*pi*n,k)+n*log(n,k)-n*log(e,k))+1); return 0;}
阅读全文
0 0
- 【BZOJ3000】Big Number
- bzoj3000 Big Number
- BZOJ3000: Big Number
- 【bzoj3000】Big Number 数学
- bzoj3000 Big Number
- [BZOJ3000][斯特林公式] Big Number
- 【bzoj3000】Big Number【数论】【Stirling公式】
- big big number 求和
- big number
- Big Number
- Big Number
- big number
- Big Number
- Big Number
- Big Number
- Big Number
- Big Number
- Big Number
- 算法导论:c++堆排序&优先队列
- Gearman的源码编译与安装
- 通过域作用符(::)访问全局变量
- 弹力侧拉
- JAVA中循环依赖的相关问题
- bzoj3000 Big Number
- 判断EditText输入的是数字还是英文还是汉字
- 数据结构复习之路-线性表
- FZU
- Less学习笔记1
- 【开发环境系列】关于Git,你需要知道的事
- [深度学习论文笔记][arxiv 1711]Learning to Segment Every Thing
- Android SDK Manager 闪退
- Android 自定义圆形进度条