初始有一个数n每过一秒所有大于1的数x都会分裂成3部分:⌊x2⌋ x2 ⌊x2⌋问经过足够长的时间后即所有的数都是0或1的时候0的个数是多少输入数据一个正整数nn=1e12输出数据最终0的个数 c++
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n;
// 每个数都分裂一次,就会多出一个0
// 由于每个数分裂后的两部分都会继续分裂,所以每个数最终会分裂出log2(n)个0
// 因此最终0的个数就是n * log2(n)
long long num_zeros = n * log2(n);
cout << num_zeros << endl;
return 0;
}
原文地址: http://www.cveoy.top/t/topic/hWKt 著作权归作者所有。请勿转载和采集!