给一个数 m m m ,找到一个 k k k ,使得 1 0 k ≤ 2 m − 1 10^{k} \le 2^{m} - 1 10k≤2m−1 .
化简式子即可。
1
0
k
≤
2
m
−
1
1
0
k
<
2
m
k
<
l
g
(
2
m
)
k
<
m
×
l
g
(
2
)
10 ^ {k} \le 2 ^ {m} - 1 \\ 10 ^ {k} < 2 ^ {m} \\ k < lg(2^m) \\ k < m \times lg(2) \\
10k≤2m−110k<2mk<lg(2m)k<m×lg(2)
则
k
=
⌊
m
×
l
g
(
2
)
⌋
k = \left \lfloor m \times lg(2) \right \rfloor
k=⌊m×lg(2)⌋ 。
// #pragma GCC optimize(3)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// #include
// #include
#define endl '\n'
#define x first
#define y second
#define fi first
#define se second
#define PI acos(-1)
// #define PI 3.1415926
#define LL long long
#define INF 0x3f3f3f3f
#define lowbit(x) (-x&x)
#define PII pair<int, int>
#define ULL unsigned long long
#define PIL pair<int, long long>
#define all(x) x.begin(), x.end()
#define mem(a, b) memset(a, b, sizeof a)
#define rev(x) reverse(x.begin(), x.end())
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e5 + 10;
int m;
void solve() {
int T = 1;
while (cin >> m) {
printf("Case #%d: %d\n", T ++ , (int)floor(m * log10(2)));
}
}
int main() {
IOS;
solve();
return 0;
}