Alta precisión: contando escaleras

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 }

 

Supongo que te gusta

Origin www.cnblogs.com/ZhengLijie/p/12719989.html
Recomendado
Clasificación