poj 1423 Big Number
来源:互联网 发布:如何登录淘宝子账号 编辑:程序博客网 时间:2024/05/21 10:56
Big Number
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 24637 Accepted: 7895
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 <= m <= 10^7 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
Source
Dhaka 2002
思路:log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)
方法一:用空间换时间,开个数组把结果存起来一部分!
#include"stdio.h"#include"math.h"#include"string.h"#define N 8000000double a[N];void Inti(){int i;a[0]=0;for(i=1;i<N;i++)a[i]=a[i-1]+log10(i);}int main(){int t,n,i;double s;Inti();scanf("%d",&t);while(t--){scanf("%d",&n);if(n<N){printf("%d\n",(int)a[n]+1);continue;}s=a[N-1];for(i=N;i<=n;i++)s+=log10(i);printf("%d\n",(int)ceil(s));}return 0;}
方法二:
n! = sqrt(2*π*n) * ((n/e)^n) * (1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3)) π = acos(-1) e = exp(1) 两边对10取对数
忽略log10(1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3)) ≈ log10(1) = 0 得到公式
log10(n!) = log10(sqrt(2 * pi * n)) + n * log10(n / e)。
忽略log10(1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3)) ≈ log10(1) = 0 得到公式
log10(n!) = log10(sqrt(2 * pi * n)) + n * log10(n / e)。
#include"stdio.h"#include"math.h"#include"string.h"#define N 80000int main(){int t,n,i;double s,pi,e;pi=acos(-1);e=exp(1);scanf("%d",&t);while(t--){scanf("%d",&n);s=log10(sqrt(2*pi*n))+n*log10(n/e);if(n==1)s=1;printf("%d\n",(int)ceil(s));}return 0;}
0 0
- POJ 1423 Big Number
- POJ 1423 Big Number
- POJ 1423 Big Number
- poj 1423 Big Number
- poj 1423 big number
- POJ 1423 Big Number
- POJ 1423 Big Number
- poj 1423 Big Number
- big number poj 1423
- POJ 1423 Big Number
- POJ 1423 Big Number
- poj - 1423-Big number
- POJ:1423 Big Number
- poj 1423 Big Number
- POJ 1423 Big Number
- 【poj】1423 Big number
- POJ 1423 BIG NUMBER
- POJ 1423 Big Number
- hdu 1864 最大报销额
- [黑马程序员]第六篇:多线程的使用
- 检测耳机插入拔出
- MFC中使用ADO操作各类数据库的封装类,包括MySql、Access、Oracle、MSSql
- linux中如何让命令的别名重启后还生效
- poj 1423 Big Number
- Java下载zip文件代码
- OpenStack的架构详解
- VC获取网页源码的三种方式
- 过年了想家了
- C++多态性
- windows与linux下sigar的系统依赖文件配置
- javascript与运算||
- nyoj 55懒省事的小明