我写的比较复杂,而且错误,求解

2.题目描述: 输入一个正整数n。输出n!的最高位上的数字。
输入:输入一个正整数n(n不超过1000)。
输出:输出n!的最高位上的数字。

#include <stdio.h>
#include<math.h>
int main() {
    int n = 0, k = 0;
    double factor = 0.0;
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i) {
        factor += log((double)i) / log(10.0);
    }
    factor -= (int)factor;
    k = exp(factor * log(10.0));
    printf("%d", k);
    return 0;
}