Big Number

题意:算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 ;
}

最新文章

  1. Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
  2. Thrift 个人实战--Thrift RPC服务框架日志的优化
  3. ZFIR054-现金流量表
  4. 解析XML的四种方式
  5. Linux:chmod -R 777 * 是什么意思?
  6. 【转】JNI和NDK的区别
  7. 关于在VMware上装lFEDORA系统
  8. 服务器编程入门(3)TCP协议详解
  9. OCP-1Z0-051-题目解析-第30题
  10. hdu 2082 生成函数
  11. Floodfill算法——求独立子图个数
  12. Epplus:导出Excel
  13. wpf中静态资源和动态资源的区别
  14. 事务是什么?事务的4个特点(ACID),事务的开启与结束
  15. UVA 10618 Tango Tango Insurrection
  16. Spring Security(二十):6.2.3 Form and Basic Login Options
  17. (转)Application, Session, Cookie, Viewstate, Cache对象用法和区别
  18. 20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS
  19. Zabbix应用二:Zabbix添加监控主机
  20. Java基础-IO流对象之字符类(FileWrite与FileReader)

热门文章

  1. 【Android】Jetpack中的ViewModel:自动保存页面数据
  2. 华为matebook14vm虚拟机错误
  3. 关于python中的特殊方法
  4. 数据结构-二叉搜索树和二叉树排序算法(python实现)
  5. hive数仓客户端界面工具
  6. 初试kafka消息队列中间件二(采用java代码收发消息)
  7. hdu1241 油田计数
  8. Promise 学习心得
  9. mysql复制那点事(2)-binlog组提交源码分析和实现
  10. 如何使用dmidecode命令查看硬件信息