题目传送门
题目大意
给出一个整数n,n的范围为1 < n < 10^7,计算n!的位数。
解题思路
计算n!的位数,及计算n!最高位是10的几次幂,即计算log10(n!),根据如下公式:
进行计算。
解题代码
#include <stdio.h> #include <math.h> int main() { int n, i; double sum; int temp; scanf("%d", &n); while(n-- != 0) { scanf("%d", &temp); sum = 0; for(i = 1; i <= temp; i++) { sum += log10(i * 1.0); } printf("%0.0lf\n", sum + 0.5); } return 0; } /**************************** *@problemID :1018 *@language :C++ *@Exe.Time :390ms *@Exe.Memory:1616k *@Code.Len :288B *****************************/
注意
1.对于最后结果需要向上取整。
本文是关于ACM竞赛中hdoj1018题目的解题报告,详细阐述了如何计算在1到10^7范围内整数n的阶乘的位数,主要涉及数论和大数处理技巧,通过计算log10(n!)并考虑向上取整得到最终答案。
2108

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



