Equilibrados consecutivos Y13847


Statement
 

pdf   zip

Haced un programa que, dados un entero positivo nn y una secuencia de enteros no negativos arbitrariamente larga, indique si la secuencia contiene, en posiciones consecutivas, al menos nn números dos-tres-equilibrados.

Un número es dos-tres-equilibrado si o bien es cero, o bien es divisible por 22 tantas veces como es divisible por 33. Por ejemplo, el 3030 es dos-tres-equilibrado porque es divisible por 22 una vez y por 33 una vez. El 1212, en cambio, no es dos-tres-equilibrado porque es divisible por 22 dos veces y por 33 una sola vez.

La solución debe completar obligatoriamente el esquema siguiente.

// Pre: m es un entero no negativo (m >= 0) 
// Post: devuelve true si m es un número dos-tres-equilibrado,
//       devuelve false en caso contrario.
bool es_equilibrado(int m) {
    ....
}

int main() {
    ....
}

Indicación: la función es_equilibrado() no debe hacer cálculos innecesarios. Por ejemplo, para determinar que 10737418241073741824 (=230=2^{30}) no es equilibrado no hacen falta muchas operaciones.

Entrada

La entrada consiste en un entero n>0n > 0, seguido de una secuencia arbitrariamente larga de enteros no negativos.

Salida

Hay que escribir TRUE si la secuencia contiene, en posiciones consecutivas, al menos nn números dos-tres-equilibrados, y FALSE en caso contrario.

Public test cases
  • Input

    3
    5 6 12 30 
    

    Output

    FALSE
    
  • Input

    3
    5 6 30 12
    

    Output

    TRUE
    
  • Input

    1
    2 3 18
    

    Output

    FALSE
    
  • Input

    4
    2 1 0 7 180 3
    

    Output

    TRUE
    
  • Input

    1
    
    
    

    Output

    FALSE
    
  • Information
    Author
    Pro1
    Language
    Spanish
    Translator
    Pro1
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++