[Escuela Lcez tercera prueba T1] [explicaciones] carpeta

// Esto es en realidad el número de Cattleya

bloques de construcción AJH

[Descripción del problema]

Desde AJH demasiada comida, así que se utiliza para pasar tiempo única manera de bloques de construcción.
AJH se produjo después de la muerte de Ben Dios del cielo, que todos sabemos, sólo Dios puede entrar Dios Ben Ben cielos, sino sólo la Amorphophallus konjac
konjac infierno, por lo que necesita para pasar la prueba con el fin de entrar en el cielo Dios Ben. En este momento, el administrador Ben Dios de _rqy cielo trajo
una caja, había una nota anterior: en este caso hay un número infinito de diferentes tamaños, pero todos es un positivo longitudes de los lados entero de una parcela rectangular
de madera, cada uno de los cuales son los bloques de construcción hay un número infinito, ahora, usted tiene que elegir los 1s en los n bloques de construcción, un refugio de un paso n-capa.
Este problema, por supuesto, no superó AJH inteligente, que finalmente entrar en el paraíso de Dios, Ben, Ben se convirtió en un dios.
Ahora Ben AJH Dios que le dé una prueba, dijo: "Por favor responder a esta pregunta, ¿cuántos tipos diferentes de tomar la ley me permite ser Dios corrió
mucho, ya que puede tomar la ley, así que por favor, dime que está dividido por 19.260.817 de? él! "

[Formato de Entrada]

Un número n

[Formato de salida]

Una salida de línea entero que representa tomar varios métodos diferentes. Desde AJH vio un gran número de los enfermos, por lo que pierden
una serie de tomar el resto ley de la división de 19.260.817.

[Entrada de la muestra]

3

[Ejemplo de salida]

5

Muestra [explicar]

Hay cinco clases, como se muestra en la Figura tomar la ley:

[Convenido] con los datos de la escala

Para 100% de los datos, 0 <n≤20

solución

Por ejemplo, para resolver
para n = 4
hay varias situaciones

que se está llenando en un bloque de púrpura, bloques de relleno de color púrpura entonces se dividen en dos partes, multiplicado por el número de programas.
Esta solución sobre
el código de la siguiente manera:

for(int i=4;i<=n;i++)
{
    for(int j=1;j<=i;j++)//紫块的宽度
    {
        f[i]+=f[j-1]*f[i-j];f[i]%=MOD;
    }
}

¿Cómo busco la muerte de

// salida no debe dar una f [4] valor inicial
// existe multiplicación, * 19260817 19260817 tiempo para abrir largo
// Con el fin de ahorrar tiempo (de hecho, esta vez no es del todo la provincia, la provincia también está mal), por sub i paridad,
pero entonces no entiendo muy bien, a la sub mal. De hecho, no se juzga por 2 especial impar, pero entonces se enganchó en un número par
y así ir debido erróneo mal interpretado como un número par, línea 29 en el momento j no han tomado = i / 2

código

#include <cmath>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MOD 19260817
//一开始不应该给f[4]赋初值
//有乘法,19260817*19260817要开long long
//为了省时间(其实这个时间是完全不用省的,省了还错),对i分了奇偶,
//但当时搞的不是太明白, 给分错了。其实是奇数时特判不用乘2,但我当时搞成了偶数 
//并且这样错下去,由于错误地理解为偶数,第29行当时j就没取=i/2 

using namespace std;
long long f[30], n;//
int main()
{
//  freopen("block.in","r",stdin);
//  freopen("block.out","w",stdout);
    cin >> n;
    f[0]=1;
    f[1]=1;
    f[2]=2;
    f[3]=5;
//  f[4]=14;
    for(int i=4;i<=n;i++){
        if(i%2==1){// 
            for(int j=1;j<=i/2;j++){
                f[i]+=f[i-j]*f[j-1]*2;
                f[i]%=MOD;
            }
            f[i]+=f[i/2]*f[i/2];
            f[i]%=MOD;
        }
        else{
            for(int j=1;j<=i/2;j++){
                f[i]+=f[i-j]*f[j-1]*2;
                f[i]%=MOD;
            }
        }
    }
    cout  << f[n] << endl;
    return 0;
}

Supongo que te gusta

Origin www.cnblogs.com/ZhengkunJia/p/12481856.html
Recomendado
Clasificación