Likou 1009. El código inverso de una implementación del lenguaje C decimal entero-Cuestiones simples

tema

Portal

texto

Todo entero no negativo N tiene su representación binaria. Por ejemplo, 5 se puede representar como binario "101", 11 se puede representar como binario "1011", y así sucesivamente. Tenga en cuenta que, a excepción de N = 0, no hay ceros a la izquierda en ninguna representación binaria.
El complemento a uno binario significa que cada 1 se cambia a 0 y cada 0 se cambia a 1. Por ejemplo, el complemento binario del número binario "101" es "010".
Déle un número decimal N, devuelva el entero decimal correspondiente al complemento de su representación binaria.

Ejemplo 1:

Entrada: 5
Salida: 2
Explicación: La representación binaria de 5 es "101" y su complemento binario es "010", que es 2 en decimal.

Ejemplo 2:

Entrada: 7
Salida: 0
Explicación: La representación binaria de 7 es "111" y su complemento binario es "000", que es 0 en decimal.

Ejemplo 3:

Entrada: 10
Salida: 5
Explicación: La representación binaria de 10 es "1010" y su complemento binario es "0101", que es 5 en decimal.

inmediato:

0 <= N < 10^9
本题与 476:https://leetcode-cn.com/problems/number-complement/ 相同

Fuente: LeetCode

plantilla

int bitwiseComplement(int N){
    
    

}

Resolución de problemas

análisis

Después de comprender el problema, puede usar soluciones inteligentes
para dividir el número decimal de entrada. Es
muy sencillo saber que el número decimal devuelto por el complemento y el número decimal original son siempre iguales a 2 n -1, por lo que debemos determinar a qué intervalo pertenece el número decimal original.

while(N>pow(2,i)-1){
    
    
i++;
}

Volver a los últimos 2 n -1-N

Código fuente

int bitwiseComplement(int N){
    
    
    int i=1;
    while(N>pow(2,i)-1)i++;
    return pow(2,i)-1-N;
}

resultado de la operación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44922487/article/details/113859311
Recomendado
Clasificación