【log求数字位数】HDU-1018 Big Number
注解
1、一个数字x的位数可用以10为底的对数加一获得,也就是
x的长度=(int)Math.log10(x)+1
2、对数里相乘可以写成对数相加的形式,也就是
log(a1a2a3)=loga1+loga2+loga3
3、综合以上两条,把阶乘形式先按2变成对数和的形式,然后对得数按1取其位数就是最终的长度。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0; i<n; i++){
int a = sc.nextInt();
double b = 0;
for(int j=1; j<=a; j++){
b += Math.log10(1.0*j);
}
int re = (int)(b) + 1;
System.out.println(re);
}
}
}