题解:B3884 [信息与未来 2015] 加数

· · 题解

感觉没有橙。

由于 N 的范围很小,所以可以直接模拟题目的过程,每次 N \gets \lfloor \dfrac{N}{2} \rfloor,然后将 N 的位数累加到答案上。

求一个数 X 的位数可以直接暴力计算,也可以使用 log10(x)+1

代码实现如下:

#include <bits/stdc++.h>
// #define DEBUG
int main()
{
    std::ios::sync_with_stdio(false), std::cin.tie(nullptr);
    int n, sum = 0;
    std::cin >> n;
    for (; n; n >>= 1)
        sum += log10(n) + 1;
    std::cout << sum;
    return 0;
}