□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 件のコメント:
コメントを投稿