hdu 1018 Big Number
2017-07-31 22:17
323 查看
点这里
斯大林公式
n! = sqrt(2*pi*n)*(n/e)^n
将两边去对数
log10(n!) = 1/2log(2*pi*n) + n*log(n/e)
得到位数
注意 pi 和 e 的精度
#include <iostream>
#include <cmath>
#include <stdio.h>
#define e 2.718281828459
#define pi 3.1415926
using namespace std;
double f(int s)
{
return 0.5*log10(2*pi*s)+s*log10(s/e);
}
int main()
{ int a,s;
while(~scanf("%d",&a))
{
while(a--)
{
scanf("%d",&s);
printf("%d\n",(int)f(s)+1);
}
}
return 0;
}
斯大林公式
n! = sqrt(2*pi*n)*(n/e)^n
将两边去对数
log10(n!) = 1/2log(2*pi*n) + n*log(n/e)
得到位数
注意 pi 和 e 的精度
#include <iostream>
#include <cmath>
#include <stdio.h>
#define e 2.718281828459
#define pi 3.1415926
using namespace std;
double f(int s)
{
return 0.5*log10(2*pi*s)+s*log10(s/e);
}
int main()
{ int a,s;
while(~scanf("%d",&a))
{
while(a--)
{
scanf("%d",&s);
printf("%d\n",(int)f(s)+1);
}
}
return 0;
}
相关文章推荐
- HDU 1018 Big Number
- HDU 1018 Big Number(斯特林公式 或 暴力)
- HDU1018 Big Number n!的位数
- HDU ~ 1018 ~ Big Number (log应用)
- HDU1018——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
- Big Number(http://acm.hdu.edu.cn/showproblem.php?pid=1018)
- HDU 1018 Big Number
- HDU 1018 Big Number
- Hdu 1018 Big Number 求N!的位数
- HDU 1018-Big Number(数学)
- HDU 1018 Big Number(杂题)
- HDU 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number