hdu1018(求n!的位数)
Posted martinue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1018(求n!的位数)相关的知识,希望对你有一定的参考价值。
Input Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 10 7 on each line.
Output The output contains the number of digits in the factorial of the integers appearing in the input.
Sample Input
2 10 20
Sample Output
7 19
题意读懂了之后就是求位数的题目嘛,求一个数n的位数很容易联想到(int)log10(n)+1,现在变成了n的阶乘,恰好又log里面相乘,直接变相加呀!这种水题不造为毛会在亚洲赛出现。。。。
貌似还有一种方法是套公式,斯特林公式:lnN!=NlnN-N+0.5*ln(2*N*pi)。
#include <iostream>
#include <stdio.h>
#include<string.h>
#include<math.h>
using namespace std;
int main()
int n,t;scanf("%d",&t);
while(t--)
scanf("%d",&n);
double s=0;
for(int i=1;i<=n;i++)
s+=log10(i);
printf("%d\\n",(int)s+1);
return 0;
以上是关于hdu1018(求n!的位数)的主要内容,如果未能解决你的问题,请参考以下文章