рдПрдХ рдмрд╛рд░ рдПрдХ рддрдЦрд╝реНрдд, рджреЛ рддрдЦрд╝реНрдд - рдПрдХ рд╕реАрдврд╝реА рд╣реЛрдЧреА ...

рдореИрдВ рд▓рдгреНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдБрдЧрд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрдо рдХрд╛рдо рд╣реИ:

рдЖрдк рд╕реАрдврд╝рд┐рдпрд╛рдБ рдЪрдврд╝рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░, рдЖрдк рдпрд╛ рддреЛ 1 рдЪрд░рдг рдкрд░ рдЪрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ 2. рдХреБрд▓ рдореЗрдВ, рд╕реАрдврд╝реА рдХреЗ рдкрд╛рд╕ n рдЪрд░рдг рд╣реИрдВред рдЖрдк рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдЕрдВрдд рддрдХ рдХрд┐рддрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ?

рдХрд╛рд░реНрдп рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрднрд╛рд╡рд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИрдВ рдФрд░ "рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЬреЛ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред"

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдирд┐рд░реНрдгрдп рдЗрд╕ рдЕрд╡рд▓реЛрдХрди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдПрдХ рдХрджрдо рдЙрдард╛рдПрдВ рдпрд╛ рджреЛ рдХрджрдо рдЙрдард╛рдПрдВред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реАрдврд╝реА рдПрдХ рдХрджрдо рд╕реЗ рдШрдЯ рдЬрд╛рддреА рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ - рджреЛ рд╕реЗред рд╕реАрдврд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдпреЛрдЧ рд╣реИ рдпрджрд┐ рд╣рдо рдПрдХ рдХрджрдо рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд░рд╛рд╕реНрддреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдирддреАрдЬрддрди, рд╕рдорд╛рдзрд╛рди рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реВрддреНрд░ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ:

рдПрдл (рдПрди) = рдПрдл (рдПрди -1) + рдПрдл (рдПрди -2)

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди "рд╣реЗрдб-рдСрди" рдЕрдиреБрдкрд╛рдд рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд▓рдЧрддрд╛ рд╣реИ (рд╣рдо рдХреЛрд╖реНрдардХ рдХреЗ рдмрд╛рд╣рд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ):

int f(int n) { if (n == 0 || n == 1) return 1; return f(n-1) + f(n-2); } 


рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрдо рд╣реИ: рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдШрд╛рддреАрдп рд╣реИ ред рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдорд╛рдирдХ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕рдВрд╕реНрдорд░рдг ред рд╕рд╣рдЬ рд╡реНрдпрд╛рдЦреНрдпрд╛: рд╕реАрдврд╝рд┐рдпреЛрдВ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдареЛрд╕ рдХрджрдо рд╕реЗ, рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдХрджрдо рдХреИрд╕реЗ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдЧрд▓реЗ рдЧрдгрдирд╛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЙрддреНрддрд░ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛ - рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред

рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдзреНрдпрд╛рди рджреЗрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрдкрд╛рдд рдмрд╕ рдПрдХ рдХреЗ рджреНрд╡рд╛рд░рд╛ n рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕реВрддреНрд░ рд╣реИ (рд╕реБрдзрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ рдЕрд▓рдЧ рд╣реИрдВ - Fib (0) = 0, Fib (1) = 1, Fib (2) = 1) , рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реАрдврд╝рд┐рдпреЛрдВ рдПрдл (0) = 1, рдПрдл (1) = 1, рдПрдл (2) = 2)ред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдмрдВрдз рд╣реИрдВ:

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдШрд╛рддрд╛рдВрдХ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП "n + 1" рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА (рдореИрдЯреНрд░рд┐рдХреНрд╕ рддрддреНрд╡ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ)ред

рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдпрд╣ рддрдереНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреЗрдЬреА рд╕реЗ рдШрд╛рддрд╛рдВрдХ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо O (ln N) рдЧреБрдгрди рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рдпрдерди рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдб (рдлрд┐рд░ рд╕реЗ, рдЕрдм рдХреЗ рд▓рд┐рдП рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рдЕрдЬрдЧрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 #!/usr/bin/env python # You are climbing a stair case. Each time you can either make 1 step or 2 # steps. The staircase has n steps. In how many distinct ways can you climb the # staircase? def mul(a, b): return ((a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]), (a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1])) def pow(a, N): """Fast matrix exponentiation""" assert N >= 1 if N == 1: return a x = pow(a, N / 2) ret = mul(x, x) if N % 2: ret = mul(ret, a) return ret def num_stair_ways(N): x = pow(((1, 1), (1, 0)), N) return x[0][0] for i in range(1, 1001): print i, num_stair_ways(i) 


рджрд░рдЕрд╕рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдореЗрд░реА рддрд░рд╣, рдкрд╛рдардХ рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реИ рдХрд┐ 200-рд╕реАрдвреА рдХреА рд╕реАрдврд┐рд╝рдпрд╛рдБ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ 45397369416530795319729696969741061923382626 рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд▓ рд╕рдХрддреА рд╣реИрдВред рдФрд░ рдпрд╣ рдХрд┐ рдпрд╣ рд▓рдШреБрдЧрдгрдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЕрджреНрдпрддрди: рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВ:

Source: https://habr.com/ru/post/In149519/


All Articles