基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)
Output
共T行,输出对应的阶乘的长度。
Input示例
3
4
5
6
Output示例
2
3
3
一开始写的时候,PI和E是这样定义的,然后就一直有错误,精度不够。
#define pi acos(-1.0)
#define e 2.71828182
经过百度,知道pi,e可以这样初始化:
const double pi=M_PI;
const double e=M_E;
正确代码:
#include <bits/stdc++.h>
using namespace std;
const double pi= M_PI;
const double e=M_E;
int main(void)
{
int t;
scanf("%d", &t);
while(t--)
{
int x;
scanf("%d", &x);
if(x==1)
{
printf("1\n");
continue;
}
long long ans=(log10(2*pi)+log10(x))/2+x*(log10(x)-log10(e));
printf("%lld\n", ans+1);
}
return 0;
}