Online Compiler C

#include <math.h> #include <stdio.h> int main() { int n, p, ntwo, yushu; double k, i, sum, ture; scanf("%d %d", &n, &p); ntwo = 0; while (n > 0) { k = n % 2; int h = n / 2; ntwo = ntwo + 10 * k; n = h; } sum = 0; ture = 1; for (i = 1; i <= p; i++) { yushu = ntwo % 10; ture = ture * 2; sum = ture * yushu + sum; ntwo /= 10; } printf("%.0f\n", sum); return 0; }
1) Этот код преобразует десятичное число `n` в его двоичное представление, а затем вычисляет сумму первых `p` битов этого двоичного числа, интерпретируя их как степени двойки.  

2) Подсказки:  
   - Обрати внимание на то, как число `n` преобразуется в двоичное (хранится как десятичное число, имитирующее двоичное).  
   - Проверь, как работает цикл `for` — он суммирует только первые `p` битов, начиная с младшего разряда.