200 写成二进制
运行下面这段程序:
本节模型:to_base(n, base) 除基取余转进制;count_bits(n) 数二进制里 1 的个数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string to_base(long long n, int base) {
// 把非负整数 n 转成 base 进制(base <= 16)
if (n == 0) return "0";
const string digs = "0123456789abcdef";
string s;
while (n > 0) {
s = digs[n % base] + s;
n /= base;
}
return s;
}
int count_bits(long long n) {
// 数 n 的二进制里有几个 1
int c = 0;
while (n > 0) {
c += n & 1;
n >>= 1;
}
return c;
}
int main() {
cout << to_base(200, 2) << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)
全部评论