|
题目如下:
Description
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the
number of digits in the factorial of the number.
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 <= m <= 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
这一题主要是关于斯特林公式的考察
求指数函数时 形式 double exp(double x) 如 e = exp(1.0)
求以10为底的对数 形式 double log10(double x)
求以e为底的对数 形式 double log(double x)
求反三角函数 形式 double asin(double value) 其余类似
求三角函数值 形式 double sin(double angle) 其余类似
求tan反三角函数值 形式 double atan(double x, double y)
关于类型转化 double s;
int x;
int y;
x = s + 1;
y = (int)s + 1;
其中 x与y不一定相等
原因: int型数据与double类型数据在计算机中存储方式不同 没有进行强制类型转化将可能导致转换出现自己意料之外的结果
解题代码:
# include <stdio.h>
# include <math.h>
int main(void)
{
long int i;
long int testnum;
long int num[1000000];
long double lognum;
long int result;
long int j;
double e;
scanf("%ld", &testnum);
e = exp(1.0);
for(i = 0; i <= testnum - 1; ++i)
{
scanf("%ld", &num[i]);
result = (int)(0.5 * log10(2 * acos(-1.0) * num[i]) + num[i] * log10(num[i] / e)) + 1;
printf("%ld\n", result);
}
return 0;
}
|
POJ 1423 解题报告
本文探讨了斯特林公式在计算大整数阶乘时的应用,特别关注如何确定阶乘的位数。通过输入整数序列,输出对应阶乘的位数,并详细解释了相关数学函数的使用,如指数函数、对数函数及三角函数。同时强调了不同类型数据转换的重要性,确保计算准确无误。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Stable-Diffusion-3.5
图片生成
Stable-Diffusion
Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

被折叠的 条评论
为什么被折叠?



