首页 > 代码库 > N!的位数
N!的位数
Description
求N!的位数
Input
输入第一行为一个正整数 n(1<=n<=25000)。
Output
输出 n!的位数。
Sample Input
10
20
Sample Output
20
19
思路
求一个数的位数,我们只需要对其进行以10为底的对数运算。假设有个数是四位数,那么其介于1000-10000中间,log10(1000)-log10(10000),结果为3-4,取4.。
另外也可以通过斯特林公式求解。这就是说,对于足够大的整数n,这两个数互为近似值。更加精确地:或
#include<stdio.h> #include<math.h> int main() { int N,i; double cnt = 0; scanf("%d",&N); for (i = 1;i <= N;i++) { cnt += log10(i); } printf("%d\n",int(cnt) + 1); return 0; }
#include<stdio.h> #include<math.h> const double PI = acos(-1.0); const double e = exp(double(1)); int main() { int n; scanf("%d",&n); printf("%d\n",int(log10(sqrt(2*PI*n))+n*log10(n/e)) + 1); return 0; }
N!的位数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。