Descripción del título
Las escaleras tienen N escalones, y puedes subir uno o dos escalones.
Escribe un programa para calcular cuántos movimientos diferentes hay.
Formato de entrada
Un número, el número de escaleras.
Formato de salida
Hay varias formas de caminar.
Muestra de entrada y salida
Ingrese # 1
4 4
Salida n. ° 1
5 5
Instrucciones / Consejos
60% N <= 50100
% N <= 5000)
Idea: Al principio, escribí 40 puntos yo mismo. No esperaba que hubiera una pieza de alta precisión. Miré la solución y usé una matriz bidimensional para guardarla. Si el valor actual es mayor que 10, lo llevo y lo envío en orden inverso.
1 #include <iostream> 2 #include <algorithm> 3 4 usando el espacio de nombres std; 5 6 int n, len = 1 , f [ 5003 ] [ 5003 ]; // f [k] [i] corresponde al paso k El número de movimientos es 7 nulo hp ( int k) 8 { 9 int i; 10 11 para (i = 1 ; i <= len; i ++ ) 12 { 13 f [k] [i] = f [k- 1 ] [ i] + f [k- 2 ] [i]; 14 } 15 16 para (i = 1 ; i <= len; i ++ ) 17 { 18 if (f [k] [i]> = 10 ) 19 { 20 f [k] [i + 1 ] + = f [k] [i] / 10 ; 21 f [k] [i] = f [k] [i]% 10 ; 22 if (f [k] [len + 1 ]) 23 { 24 len ++ ; 25 } 26 } 27 } 28 } 29 30 int main () 31 { 32 int i; 33 34 cin >> n; 35 36 f [ 1 ] [ 1 ] = 1 ; 37 f [ 2 ] [ 1 ] = 2 ; 38 para (i = 3 ; i <= n; i ++) // A partir del tercer orden 39 { 40 hp (i); 41 } 42 para (i = len; i> = 1 ; i-- ) 43 { 44 cout << f [n] [i]; 45 } 46 devuelve 0 ; 47 }