[ACM] hdoj1018 Big Number 解題報告
阿新 • • 發佈:2019-02-11
題目傳送門
題目大意
給出一個整數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.對於最後結果需要向上取整。