hdu1018 阶乘位数的数学原理
Big Number
这道题虽然我是用java解的,但是并没有用到java中大数的类。因为直接用java的大数来模拟的话,也会超时。这时需要了解一个数学原理
1×2×3×……×1000的位数=log+log2+log3+……+log1000+1
阶乘结果的位数:log1+log2+log3+log4+...+logn 取整加1
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String []args)throws Exception{ Scanner cin = new Scanner(System.in); int t = cin.nextInt(); while(t--!=0){ String a=cin.next(); int n = Integer.parseInt(a); System.out.println(digit(n)); } cin.close(); } public static int digit(int n){ double sum=0; for(int i=1;i<=n;i++) { double t = Math.log10(i); sum+=t; } return (int)sum+1; } }