HDU1018(斯特林公式)
来源:互联网 发布:中国国家地理 知乎 编辑:程序博客网 时间:2024/04/29 09:49
Problem Description
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number.
Input
Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 107 on each line.
Output
The output contains the number of digits in the factorial of the integers appearing in the input.
Sample Input
21020
Sample Output
719这个题的意思是:给你一个数,让你求出N!由多少位数构成,比如输出10,它的阶乖是3628800 由7位数构成,这时你要输出7;解题思路:1.可以暴力,N的阶乖的位数等于LOG10(N!)=LOG10(1)+.....LOG10(N);2.Stirling公式:n!与√(2πn) * n^n * e^(-n)的值十分接近
故log10(n!) = log(n!) / log(10) = ( n*log(n) - n + 0.5*log(2*π*n))/log(n);解法一:LANGUAGE:C++CODE:
- #include<stdio.h>
- #include<math.h>
- double reback(int n)
- {
- double cnt=0;
- for(int i=2;i<=n;i++)
- {
- cnt+=log10(i);
- }
- return cnt;
- }
- int main()
- {
- int cas,n;
- scanf("%d",&cas);
- while(cas--)
- {
- scanf("%d",&n);
- printf("%d\n",(int)reback(n)+1);
- }
- return 0;
- }
解法二:LANGUAGE:C++CODE:
- #include <stdio.h>
- #include <math.h>
- const double PI = acos(-1.0);
- const double ln_10 = log(10.0);
- double reback(int N)
- {
- return ceil((N*log(double(N))-N+0.5*log(2.0*N*PI))/ln_10);
- }
- int main()
- {
- int cas,n;
- scanf("%d",&cas);
- while(cas--)
- {
- scanf("%d",&n);
- if(n<=1)printf("1\n");
- else printf("%.0lf\n",reback(n));
- }
- return 0;
- }
阅读全文
0 0
- hdu1018(斯特林公式)
- HDU1018(斯特林公式)
- POJ1423 HDU1018 Big Number【斯特林公式】【高精度】
- hdu1018 Big Number(斯特林公式)
- hdu1018--斯特灵公式
- hdu1018(斯特灵公式)
- hdu1018——Big Number(大数阶乘,斯特林公式)
- hdu1018 Big Number stirling公式
- hdu1018
- hdu1018
- hdu1018
- hdu1018
- hdu1018
- hdu1018
- hdu1018
- HDU1018
- hdu1018
- HDU1018
- DNS以及DNS解析
- mac上传本地项目到GitHub
- 递归解释 系统栈
- android 通过uri获取bitmap图片并压缩
- 8.9.1
- HDU1018(斯特林公式)
- FastJson和Jackson的使用
- H5前端代码规范
- 函数表达式
- 最全的常用主流浏览器User-Agent
- HDU2795 线段树 单点更新 区间最大值
- hdu 6092 Rikka with Subset(dp背包)
- Hrbust 2295 方方正正【规律】
- 170809 逆向-RouterScan(10)