2023-05-20 Análise do Trabalho de Exame de Grau de Programação de Software Juvenil (Linguagem C) (Nível 5)

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

Acho que você gosta

Origin blog.csdn.net/lybc2019/article/details/131162700
Recomendado
Clasificación