/* * number of digits in n! */ #include #include #include #include int digs (unsigned long int N); int main (void) { unsigned long int N; char s [100]; while (gets (s) != NULL) { sscanf (s, "%lu", &N); printf ("%d\n", digs (N)); } return 0; } int digs (unsigned long int N) { unsigned long int i; double ans; ans = 0.0; for (i = N; i > 0; i--) { ans += log (i) / log (10); } return (1 + (int)(floor (ans))); }