2010年9月13日月曜日

PKU Judge Online 1423 Big Number

■1423 Big Number

□Problem
n!は10進数表記で何桁になるか求めよ.

□Solution
ある自然数mが10進数表記でd(m)桁になるとき,
d(m)=[log10(m)]+1
が成り立つ.
よって,
d(n!)
=[log10(n!)]+1
=[Σk=[1,n]log10(k)]+1

d(n!)を1≦n≦107について予め求めておく.

□Code
package p1423;

import java.util.*;
import java.lang.*;
import java.math.*;

public class Main{
Scanner sc=new Scanner(System.in);

void run(){
int n=(int)1e7;
int[] d=new int[n+1];
double a=0.0;
for(int i=1; i<=n; i++){
a+=Math.log10(i);
d[i]=(int)a+1;
}
for(int t=sc.nextInt(); t>0; t--){
int k=sc.nextInt();
println(d[k]+"");
}
}

void println(String s){
System.out.println(s);
}

void print(String s){
System.out.print(s);
}

public static void main(String[] args){
new Main().run();
}
}

0 件のコメント: