题目链接:Add More Zero
题目大意:给你一个m,现在你可以表示 1到2m−1 里面的数,能表达到1到 10k ,问这个k最大是多少
题目思路:实际上就是求 2m−1 有多少位,也就是问 ⌊lg(2m−1)⌋ 是多少,因为不存在 2m−1 比 2m 少一位的情况,所以直接求 lg(2m) 就好了,也就是 m∗lg(2) ,所以这就是答案
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
int m,t = 0;
while(~scanf("%d",&m)){
printf("Case #%d: ",++t);
int ans = m*log10(2.0);
printf("%d\n",ans);
}
return 0;
}