共63道题,当前是第57题
1 #include <iostream> 2 using namespace std; 3 4 int c[100], n, s, cnt, ans; 5 6 void calln(int x) { 7 while (x) { 8 n++; 9 x >>= 1; 10 } 11 } 12 13 int bitcount(int x) { 14 int cnt = 0; 15 while (x) { 16 cnt += x & 1; 17 x >>= 1; 18 } 19 return cnt; 20 } 21 22 int main() { 23 cin >> s; 24 calln(s); 25 for (int i = s; i; i = s & (i-1)) { 26 cnt++; 27 c[bitcount(i)] += i; 28 } 29 for (int i = 1; i <= n; i++) 30 ans = max(ans, c[i]); 31 cout << cnt << endl; 32 cout << ans << endl; 33 return 0; 34 }
输出的第一行不会超过输入的 $s$。( )
$bitcount(x)$ 函数用于计算 $x$ 对应的二进制整数的位数。( )
输入的 $s$ 不应大于 $100$,否则会发生数组越界。( )
当输入的 $s$ 为 $23$ 时,输出的第一行整数为( )。
当输入的 $s$ 为 $11$ 时,输出的第二行整数为( )。
当输入的 $s$ 为 $127$ 时,输出的第二行整数为( )。