1. 程式人生 > >[ACM] hdoj1018 Big Number 解題報告

[ACM] hdoj1018 Big Number 解題報告

題目傳送門

題目大意

給出一個整數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.對於最後結果需要向上取整。