HDU 1018 Big Number 斯特林公式
2024-09-01 05:24:20
题意:算n!的位数。
题解:对于一个数来算位数我们一般都是用while去进行计算,但是n!这个数太大了,我们做不到先算出来在去用while算位数。
while(a){
cnt++;
a/=;
}
将一个数对取10对数(取整),然后再加一就是这个数的位数,然后我们在算n!的时候每次对10取对数就好了。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int t, n;
cin >> t;
while(t--)
{
cin >> n;
double sum = 0.0;
for(int i = ; i <= n; i++)
sum+=log10(i);
cout <<(int)sum+<<endl;
}
return ;
}
然后有一个公式叫做斯特林公式, 它可以算出n!的近似值所以我们也可以用斯特拉公式来求解。
#include<cstdio>
#include<cmath>
using namespace std;
#define Pi 3.14159265
#define e 2.71828182
int main(void)
{
int t, n;
double ans;
scanf("%d",&t);
while(t--)
{ scanf("%d",&n);
ans = log10(sqrt(*Pi*n))+n*log10(n/e);
printf("%d\n",(int)ans+);
}
return ;
}
最新文章
- Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
- Thrift 个人实战--Thrift RPC服务框架日志的优化
- ZFIR054-现金流量表
- 解析XML的四种方式
- Linux:chmod -R 777 * 是什么意思?
- 【转】JNI和NDK的区别
- 关于在VMware上装lFEDORA系统
- 服务器编程入门(3)TCP协议详解
- OCP-1Z0-051-题目解析-第30题
- hdu 2082 生成函数
- Floodfill算法——求独立子图个数
- Epplus:导出Excel
- wpf中静态资源和动态资源的区别
- 事务是什么?事务的4个特点(ACID),事务的开启与结束
- UVA 10618 Tango Tango Insurrection
- Spring Security(二十):6.2.3 Form and Basic Login Options
- (转)Application, Session, Cookie, Viewstate, Cache对象用法和区别
- 20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS
- Zabbix应用二:Zabbix添加监控主机
- Java基础-IO流对象之字符类(FileWrite与FileReader)