题意
求n!在k进制下的位数
直接套斯特林公式
n!≈2nπ−−−√ (ne)n
小数据暴力,大数据套公式
证明我不会……
#include <cstdio>
#include <cmath>
const double pi=acos(-1),e=exp(1),eps=1e-7;
int main(){
int n,k;
while(~scanf("%d %d",&n,&k)){
if(n<=10000){
double Ans=0;
for(int i=1;i<=n;i++)
Ans+=log(i)/log(k);
printf("%lld\n",(long long)(Ans+1e-7)+1ll);
}
else printf("%lld\n",(long long)((log(2*pi*n)/2.0+n*log(n/e))/log(k)+eps)+1ll);
}
}
本文介绍了一种使用斯特林公式估算n!在特定进制下位数的方法,并提供了C++实现代码。适用于小数据的暴力计算及大数据的公式计算。
9万+

被折叠的 条评论
为什么被折叠?



