Keyword: math, logarithm, DP
Algorithm:
We know that log(a*b) = log a + log b, so log n! = log 1 + log 2 + ... + log n.
Further more, we can get how many digits a number has by taking logarithm operation with a base of 10.
Also, there's a recursive function that N! = (N-1)! * N.
Code:
#include<cstdio> #include<cmath> double ans[ 10000001 ] = { 0, 1 }; int in, t; int main() { scanf( "%d", &t ); for( int i = 2; i <= 10000000; ++i ) ans[ i ] = ans[ i-1 ] + log10( i ); while( t-- ) scanf( "%d", &in ), printf( "%d\n", int( ans[ in ] ) ); return 0; }
沒有留言:
張貼留言