HDACM1018
此题有点坑,一看Big Number 以为是调用大数类的方法来做,可是总是超时,后来发现,求一个数的位数不就是用log10(num)+1来求的么,
而 num=1*2*3*4*…*n;
log10(num)+1
=log10(1*2*3*4*…*n)+1
=log10(1)+log10(2)+log10(3)+log10(4)+…+log10(n)+1
即调用Math.log10()函数即可解决
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();while (n-->0) {int i = sc.nextInt();double sum = 0;for (int j = 1; j <= i; j++) {sum += Math.log10(j);}System.out.println(1+(int)sum);}}}
}