hdu 1018 Big Number 数学
来源:互联网 发布:用友沙盘模拟软件 编辑:程序博客网 时间:2024/05/21 06:56
难度:2
很好玩
题意:求n!阶乘的数的位数。
方法一:log10(n!)=log10(1)+log10(2)+…..+log10(n);
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;int main() { int T , n; scanf("%d" , &T); while(T--) { scanf("%d" , &n); double ans = 0; for(int i=2;i<=n;i++) { ans += log10( (double) i ); } int res = (int)ans + 1; printf("%d\n" , res); } return 0;}
方法二: 由斯特林[striling]公式可得:lnN!=NlnN-N+0.5ln(2N*pi)
而N的阶乘的位数等于:log10(N!)取整后加1
代码2:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;#define pi acos(-1.0)//lnN!=NlnN-N+0.5ln(2N*pi)int main() { int T; double n; scanf("%d" , &T); while(T--) { scanf("%lf" , &n); double ans = (n * log(n) - n + 0.5 * log(2 * n * pi)) / log(10); printf("%d\n" , (int)ans + 1); } return 0;}
0 0
- hdu 1018 Big Number 数学
- HDU 1018 Big Number 数学题解
- HDU 1018-Big Number(数学)
- POJ 1423 &&hdu 1018 Big Number【数学】
- hdu-1018-Big Number-简单数学
- HDU 1018 Big Number (数的阶乘的长度:数学)
- hdu 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 - Big Number
- hdu 1018 Big Number
- hdu 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- hdu 1018 Big Number
- hdu 1018 Big Number
- HDU 1018 Big Number
- hdu 1018 - Big Number
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- 苹果中国供应商再增20家
- hdu1027 Ignatius and the Princess II(排列问题)
- iOS真机调试证书那些事儿
- CCI: Count negative numbers in matrix
- hdu 1018 Big Number 数学
- win32 往图片中写水印
- C++ ”类“ 知识的回顾
- 第六周作业
- paip.输入法编程---词库多意义条目分割 python实现.
- Dll中运用vector的堆栈崩溃
- 萌神吃土豆007 (zoj 3676 - 3685)
- 顺序图
- paip.代码生成器数据源格式最佳实践