рдЭрдВрдЭрдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЧреНрд░реЗ рдХреЛрдб

рдирд╣реАрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ Habr├й рдкрд░ рдПрдХ рд▓реЗрдЦ рдерд╛ " рдЧреНрд░реЗ рдХреЛрдб рдФрд░ рдЦреЛрдЬ рдХреЗ рдХрд╛рд░реНрдп "ред рдпрд╣ рд▓реЗрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдзрд┐рдХ рдЧрдгрд┐рддреАрдп рд╣реИ, рдФрд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕рд╣рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рдерд╛ред рд▓реЗрдХрд┐рди рд╡рд┐рд╖рдп рд╕реНрд╡рдпрдВ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рдд рдХреА рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред

рдЫрд╡рд┐
KDPV: рдПрдХ рдЬреАрд╡рдВрдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рд╡реНрдпрдВрдЧреНрдп рд╕рдорд╕реНрдпрд╛

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рдпрд╣ рд╕рдм 10 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛ рдЬрдм рдореИрдВ рдиреМрд╡реАрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдерд╛ред рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рд╢рд┐рдХреНрд╖рдХ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдмрдбрд╝реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкрд╣реЗрд▓реА рд╕реБрдирдХрд░ рд╕реБрдирд╛рдпрд╛: рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдереАред рд╕реЗрдЯ рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдореЗрд░реА рдЖрддреНрдорд╛ рдореЗрдВ рдбреВрдм рдЧрдпрд╛ред рдШрд░ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рд╛: рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдВрднрд╡ рд░рд╛рд╢рд┐рдпреЛрдВ рдХреА рдПрдХ рднреЛрд▓реА рдЦреЛрдЬред рдореБрдЭреЗ рд╕рднреА рдПрди-рдмрд┐рдЯ рдмрд╛рдЗрдирд░реА рдирдВрдмрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирдВрдмрд░реЛрдВ рдХреА рд░рдХрдо рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдпреЛрдЬрди рдорд┐рд▓рд╛, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдЗрдпрд╛рдВ рдЕрдиреБрд░реВрдк рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдлрд╕реЛрд╕ рд╣реБрдЖ рдХрд┐ 30 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╣реАрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕рдордп n * 2 n рд╣реИ (рдпреЛрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рд╕рдВрдпреЛрдЬрди рдХреА рд╕рдВрдЦреНрдпрд╛)ред

5 рд╕рд╛рд▓ рд╣реЛ рдЧрдПред рдореИрдВ рд╕реНрдХреВрд▓ рдЦрддреНрдо рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдЬрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдп рдЕрднреА рднреА рдореЗрд░реЗ рд╕рд╛рде рдерд╛ред рдПрдХ рдмрд╛рд░, "рдПрд▓рдЧреЛрд░рд┐рджрдо рдЯреНрд░рд┐рдХреНрд╕ рдлреЙрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕" (рд╣реИрдХрд░ рдбрд┐рд▓рд╛рдЗрдЯ / рд╣реЗрдирд░реА рдПрд╕ред рд╡реЙрд░реЗрди рдЬреВрдирд┐рдпрд░) рдкреБрд╕реНрддрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореИрдВ рдЧреНрд░реЗ рдХреЛрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдпрд╛: рдпрд╣ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред "рдмрдВрдж рдХрд░реЛ!" рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ред "рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ ... рд╣рд╛рдБ!" рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЦреЛрдЬ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛ рдореЗрдВ, рдЖрдк рдкреВрд░реА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝ рдпрд╛ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред " рдФрд░ рдореИрдВ рддреБрд░рдВрдд рд╡рд┐рд╖рдп рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдЧрд╣рд░рд╛ рдЧрдпрд╛ред

рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЧреНрд░реЗ рдХреЛрдб


рдЧреНрд░реЗ рдХреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рд╕реА рднреА рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ:

0
1

рджреВрд╕рд░рд╛ рдЕрдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдЙрд╕реА рдкреАрдЫреЗ рдХреА рдУрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

0
1
1
0

рдФрд░ рджреВрд╕рд░реА рдЫрдорд╛рд╣реА рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:

00
01
11
10

рдЗрд╕реА рддрд░рд╣ рддреАрди рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП:

000
001
011
010
110
111
101
100

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдХрдо рдмрд┐рдЯ рдХреНрд╖рдорддрд╛ рдХреЗ рдПрдХ рдХреЛрдб рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрд╕ (рдкрд░рд╛рд╡рд░реНрддрд┐рдд) рдЧреНрд░реЗ рдХреЛрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдХреНрд░рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдХреЛрдб рдлреНрд░реИрдВрдХ рдЧреНрд░реЗ рдХреЗ рдирд╛рдо рдкрд░ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЯреНрдпреВрдм рдПрдбреАрд╕реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ рдерд╛ред рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдореЗрдВ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде, рдбрд┐рдЬрд┐рдЯрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдЯреНрд╕ рдХреЗ рдПрдХ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдЕрдЪрд╛рдирдХ рдЫрд▓рд╛рдВрдЧ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред

рдлреНрд░реИрдВрдХ рдЧреНрд░реЗ рдкреЗрдЯреЗрдВрдЯ
рдлреНрд░реИрдВрдХ рдЧреНрд░реЗ рдкреЗрдЯреЗрдВрдЯ рдЪрд┐рддреНрд░рдг

рдЧреНрд░реЗ рдХреЛрдб рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЛрдг рд╕реЗрдВрд╕рд░ рдореЗрдВ рд╣реИред рдкреБрд░рд╛рдиреЗ рдпрд╛рдВрддреНрд░рд┐рдХ рдЪреВрд╣реЛрдВ рдореЗрдВ рдЬреЛ рдерд╛, рдЙрд╕рдХреЗ рд╕рдорд╛рди рд╕реЗрдВрд╕рд░, рд▓реЗрдХрд┐рди рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЛрдг рдХрд╛ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдИ рдСрдкреНрдЯреЛрдХреЛрдкреНрд▓рд░реНрд╕ рдФрд░ рдХрдИ рд╕реНрд▓реЗрдЯреЗрдб рдЭрдВрдЭрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрдВрд╕рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╕реАрдорд╛рдУрдВ рдкрд░ рдЧреИрд░-рд╕рдордХрд╛рд▓рд┐рдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реИ, рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реАрдбрд┐рдВрдЧ рдореЗрдВ рддреЗрдЬ рдХреВрджрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдЧреНрд░реЗ рдХреЛрдб рдХреА рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛ рднреА рдкрд╣рд▓реЗ рдПрдХ рд╕реЗ рдПрдХ рдмрд┐рдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ "рд▓реВрдк" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЫрд╡рд┐
рд░реЛрдЯреЗрд╢рди рдХреЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдХреЛрдг рдХрд╛ рд╕реЗрдВрд╕рд░ред рдЧреНрд░реЗ рд╕реНрд▓реЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдСрдкреНрдЯрд┐рдХрд▓ рд╕реНрд▓реЙрдЯ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдХреНрдиреИрдкреНрд╕реИрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрд╡реЗрджрди


рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рдердкреНрдкрдбрд╝ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдПред рдорд╛рдирдХ рд╕реВрддреНрд░ рд╣рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЧреНрд░реЗ рдХреЛрдб рджреЗрддрд╛ рд╣реИ:

G = i ^ (i >> 1) 

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

0
1
0
2
0
1
0
3
0
1
0
2
0
1
0
4
...

рдХреНрдпрд╛ рдХреБрдЫ рднреА рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ? рдпрд╣ рд╡рд╣ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рд╛рдзрд╛рд░рдг рдмрд╛рдЗрдирд░реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдПрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╛ рдлрд┐рд░ - рдПрдХ рдмрд╛рдЗрдирд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорд╛рдореВрд▓реА рдЗрдХрд╛рдИ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдлрд╛рдЗрдВрдб рдлрд╝рд░реНрд╕реНрдЯ рд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИред Visual C ++ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЛ _BitScanForward рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдЬреЛ рдЧреНрд░реЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЕрдкреНрд╕реИрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ:

Input.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдмреИрдХрдкреИрдХ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рд╢реЗрд╖ рд▓рд╛рдЗрдиреЗрдВ рдЪреАрдЬреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИрдВред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдмреИрдХрдкреИрдХ рдХрд╛ рдЕрдзрд┐рдХрддрдо рднрд╛рд░ рдФрд░ рдЪрдпрдирд┐рдд рдЪреАрдЬреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрдирдкреБрдЯ рдЖрджрд┐ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ - рджреЗрдЦреЗрдВред

рд╣рдо рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЪреАрдЬреЛрдВ рдХреЗ рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝ рдпрд╛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗред Ints рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪреАрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдФрд░ рдкреНрд░рдпреБрдХреНрдд рдмрд┐рдЯреНрд╕) рдХреЛ рдЗрдХрддреАрд╕ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 #include <iostream> #include <fstream> #include <bitset> #include <intrin.h> using namespace std; void main() { int target; //   int nItems = 0; //   int weight[31]; //   ifstream inFile("input.txt"); inFile >> target; while(inFile >> weight[nItems]) nItems++; inFile.close(); const unsigned int nIterations = 1 << nItems; //  , 2^n int sum = 0; //    int bestSum = 0; //   (  ) bitset<31> mask; //     bitset<31> bestMask; //     for (unsigned int i = 1; i < nIterations; i++) { unsigned long position; //      _BitScanForward(&position, i); mask[position] = !mask[position]; if (mask[position]) //        sum += weight[position]; else sum -= weight[position]; if (sum > target) //  continue; if (sum > bestSum) //  !  ... { bestSum = sum; bestMask = mask; } } cout << "Best approximation: " << bestSum << endl; cout << "Used weights:" << endl; for (int i = 0; i < 31; i++) if (bestMask[i]) cout << weight[i] << endl; cin.get(); } 

рдореИрдВ рд╕рдВрднрд╡ рдЦреБрд░рджрд░рд╛рдкрди рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ; рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, C ++ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореЗрд░реА рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдирд╣реАрдВ рд░рд╣реАред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдирдВрдмрд░реЛрдВ рдХреЛ рдЦрд░реЛрдВрдЪрдиреЗ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 20 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдФрд░ 30 рдкрд░ рдореИрдВ рдЕрднреА рднреА рднреЛрд▓реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛, рдЬрдмрдХрд┐ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 7 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдШрд╛рддреАрдп рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдХрд╛рдлреА рдХреБрдЫ рд╣реИ: 50 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдм рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рднреА рд╕рдЯреАрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо 2 рдПрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛; рддреЗрдЬреА рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рд╣реИред (рдЕрдкрдбреЗрдЯ: рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдмреАрдЪ-рдмреАрдЪ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рддреЗрдЬреА рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджреЗрдЦреЗрдВред)

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

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


All Articles