PKU 1423-Big Number

問題概要

n!の桁数を求めよ

解法

ある数値Nの桁数はlog10N +1で求まる.また,log内でのかけ算は足し算に直すことが出来るので,それを用いて10^7までの解を全て求めておく.

実装(C)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int res[10000000];
int main(n) {
	int i;
	double t=log10(1);
	for(i=1;i<=10000000;i++){
		t+=log10(i);
		res[i]=(int)t+1;
	}
	for(scanf("%d",&n);~scanf("%d",&n);){
		printf("%d\n",res[n]);
	}
	return 0;
}