题目描述
9的阶乘等于:362880
它的二进制表示为:1011000100110000000
这个数字共有19位。
请你计算,9999 的阶乘的二进制表示一共有多少位?
输出
输出一个整数表示答案
知识点:
整数m在k进制下,有多少位?
公式:[logkm]+1[\log_{k}{m}]+1[logkm]+1
再根据公式:
logca∗b=logca+logcb\log_{c}{a*b} = \log_{c}{a}+\log_{c}{b}logca∗b=logca+logcb
代码如下:
#include <iostream>
#include <cmath>
using namespace std;int main() {double ans = 0;//注意要用doublefor (int i = 1; i <= 9999; i++) {ans += log2(i);}cout << (int)(floor(ans)) + 1 << endl;return 0;
}