数的长度
2016-04-19 23:14
141 查看
数的长度
时间限制:3000 ms | 内存限制:65535 KB难度:1
描述
N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?
输入首行输入n,表示有多少组测试数据(n<10)
随后n行每行输入一组测试数据 N( 0 < N < 1000000 )
输出对于每个数N,输出N!的(十进制)位数。
样例输入
3 1 3 32000
样例输出
1 1130271
设 N!=M=10^n(10的n次方) 只要求出n就知道M有多少位的数了,对等式两边取底 n=log10(M)=log10(1*2*...*N)=log10(1)+log10(2)+...+log10(N) (对数的运算法则 logA*B=logA+logB)
#include<stdio.h> #include<math.h> int main() { int n,a,i; double sum; scanf("%d",&n); while(n--) { scanf("%d",&a); sum=0; for(i=1; i<=a; ++i) sum+=log10(i); printf("%.0lf\n",sum+1); } return 0; }
相关文章推荐
- 数的长度【南阳 oj 题目69】
- 并查集详解
- Linux零基础入学之1-4 Linux文件管理-xfs文件系统的备份恢复-服务器来电后自动开机
- Python 第三方库总论
- VC操作word实例详解
- Android内存溢出问题
- Java语言基础1
- 循序渐进之Spring AOP(6) - 使用@Aspect注解
- Entity Framework
- 个人工作总结02
- 算法导论, 10.2-1
- Hibernate懒加载在SSH项目中的配置及原理
- POJ1066
- 教师面试详细流程
- 响应式web设计
- Mac系统终端命令行不执行命令 总出现command not found解决方法
- ovs
- 使用正则表达式突出搜索结果
- Windows环境下利器:powershell
- 如何及时汇报反馈工作