题目:
阶乘位数 9的阶乘等于:362880 它的二进制表示为:1011000100110000000 这个数字共有19位。 请你计算,9999 的阶乘的二进制表示一共有多少位? 注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)
思路:
9的阶乘和二进制表示之间的关系 9!=9*8*7.....*2*1
二进制表示
9=2^log2 (9)
8=2^log2(8)
....
1=2^log2(1)
这样就找到了关系,接下来只需要写一个循环就就能暴力出9999的阶乘二进制表示位数
代码如下:
public class First { public static void main(String []args){ double sum=0; for(int i = 1;i<=9999;i++){ sum+= Math.log(i)/Math.log(2); } System.out.println(sum); } }
注意最后sum用进一法保留整数即可。
结果为
118445