2065 "virus roja" poder problema rápida

Descripción del problema
Los nuevos virus encontrados en la comunidad médica debido a su difusión e Internet velocidad de propagación "virus roja" comparable, conocido como el "virus roja", el estudio encontró que una sola hebra del virus y sus variantes de ADN, citosina , timina están emparejados.
Ahora hay una cuerda de longitud N, satisface la condición en:
(1) sólo por la cadena A, B, C, D de cuatro letras;
; (2) A ocurre número par de veces (o no puede ocurrir)
(. 3) C ocurre número par de veces (o no puede ocurrir);
cálculo del número de serie de caracteres que satisface la condición.
cuando N = 2, todas las condiciones siguientes son cadenas satisfechos 6 :. BB, BD, DB, DD, AA, CC
para este los datos dispuestos a ser muy grande, siempre y cuando le dan los dos últimos dígitos pueden ser.
 
Entrada
La primera línea de entrada de cada T es un número entero, indica el número de ejemplos de ensayo, los siguientes datos de T-línea, cada línea de un número entero N (1 <= N <2 ^ 64), termina cuando el T = 0.
 
Salida
Cada caso de prueba para los dos últimos, el número de cadena de salida, cada salida seguida por una línea en blanco.
 
Ejemplo de entrada
4 1 4 20 11 3 14 24 6 0
 
Ejemplo de salida
Caso 1: 2 Caso 2: 72 Caso 3: 32 Caso 4: 0 Caso 1: 56 Caso 2: 72 Caso 3: 56

 

Enlaces de referencia: Ahora, de vuelta a la solución del problema de encontrar ,,, ejecutar el poder lo suficientemente rápido.

Rápida Mi: rápido de energía

La final Código de CA:

# include <cstdio> 
typedef largo  largo  int LL;
 int fastmi (LL, LL b) { // rápidamente encontrar un B-ésima potencia 
    LL = ANS 1. , Base = a;
     al mismo tiempo que (b) {
         SI (& b . 1 ) ANS = (ANS * Base )% 100 ;
         Base = ( Base * Base )% 100 ; 
        b >> = 1 ; // aquí para ser cuidadosos para escribir b >> 1; entonces no será un bucle infinito 
    } 
    retorno SNA; 
} 
int main () {
    LL n, t, T; 
    mientras que (scanf ( " % LLD " , & T) && T) { 
        t = T;
        mientras que (t-- ) { 
            scanf ( " % LLD " , y n); 
            printf ( " % LLD caso:% LLD \ n " , Tt, (fastmi ( 4 , n- 1 ) + fastmi ( 2 , n- 1 ))% 100 ); 
        } 
        Printf ( " \ n " ); 
    } 
    Volver  0 ; 
}

Resumen: tema muy complejo, que puede ser muy simple de resolver, me he dado cuenta una vez más con el poder de las matemáticas. . En cuanto a por qué la ley es fastmi (4, n-1) + fastmi (2, n-1)? Sólo puedo decir que, por el conteo manual, se pueden encontrar casos de prueba presentados son consistentes con la ley, por lo que las hipótesis audaces. Después de eso, algunos ven las ideas de soluciones rápidas sobre el poder, se demostró por derivación matemática de la ley de la forma, pero el proceso de derivación es extremadamente complejo, a continuación, se dio por vencido. Anote este problema, sólo gustaría poder recordar una hermosa algoritmo de potencia rápido!

Supongo que te gusta

Origin www.cnblogs.com/heyour/p/12598569.html
Recomendado
Clasificación