2023-05-20 Programação de Software para Adolescentes (Linguagem C) Exame de Nota (Nível 5) Análise
T1, Resolução de Problemas
Dado um número inteiro positivo N, encontre o menor M que é maior que N e tem o mesmo número na representação binária de M e N 1.
Por exemplo, se N é dado como 78, a representação binária é 1001110, que contém 4 1s, então o menor número que é maior que N e contém apenas 4 1s na representação binária é 83, e sua representação binária é 1010011, então 83 é a resposta.
Limite de tempo: 1000
Limite de memória: 65536
entrada
Insira várias linhas, cada linha tem um número N (1 ≤ N ≤ 1000000), se esta linha for 0, significa que a entrada acabou.
Saída
Para cada N, imprima o M correspondente.
Exemplo de entrada
1
2
3
4
78
0
Exemplo de saída
2
4
5
8
83
// 样例代码 枚举
using namespace std;
int n; // 定义变量 n
int tj(int x) {
int ans = 0; // 定义变量 ans
while (x) { // 当 x 不为0循环执行
if (x &)
ans++; // 如果 x 的最低位为1,则将 ans 加1
x >>= 1; // 将 x 右移1位,即将 x 的二进制表示向右移动一位
}
return ans; // 返回 ans
}
int main() {
whi