欢迎使用CSDN-markdown编辑器
来源:互联网 发布:桌面的数据都没了 编辑:程序博客网 时间:2024/06/05 03:02
NYOJ69 数的长度
原题地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=69
#include <iostream>#include <cmath>using namespace std;int main(void){ int t, n; double sum; cin >> t; while (t--) { cin >> n; sum = 0; for (int i=1; i<=n; i++) sum += log10(i); cout << (int)sum + 1<< endl; } return 0;}
下面谈一谈我的思路。
在十进制数中 10^0是1位数,10^1是2位数,10^2是3位数,依此类推。对于n的阶乘n!,假设它是一个m位的数,可以确定10^(m-1)<= n! < 10^(m),因为10^(m-1)是最小的m位数, 10^(m)是最小的m+1位数。n!有m位,必将大于等于最小的m位数且小于最小的m+1位的数,对该不等式取10为底的对数有 m-1 <= log10(n!) < m。
log10(n!) = log10(n * (n-1) * (n-2) * …… * 1)
对于对数有公式:loga(m*n) = loga(m) + loga(n) 故上式可化为log10(n) + log10(n-1) + log10(n-2) + …… + log10(1)
因此通过此公式可求出log10(n!),向下取整即可求出m-1,进而得到n!的位数m。
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 进程间通信的方式(一):管道
- 解决 Error:No suitable device found: no device found
- 高通 MSM8K bootloader 之一: SBL1
- 数据分析与数据挖掘在常规工作中的应用——日期处理
- 解压cpio文件
- 欢迎使用CSDN-markdown编辑器
- 算法概论 | NP完全问题
- Fragment嵌套Fragment的时候内部的不要用getFragmentManager
- Android系统典型bootloader分析
- Maven使用总结(二):Maven依赖配置
- 观察babel如何把let转化为var实现块级作用域
- POJ 3723 Conscription(构造+最小生成树Kruskal)
- DFS初探
- 查看Android应用包名的全部方法