рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдереНрдо рдЬрдирд░реЗрдЯрд░

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

рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдПрдХ рдирд┐рд╡реЗрджрди рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЖрд╡реЗрджрди рдорд┐рд▓рддрд╛ рд╣реИ рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдФрд░ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╢рдмреНрджрдХреЛрд╢ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рд╡реЗ рджрд░реНрдж рд╕реЗ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдЧрд┐рд░реА рд╣реБрдИ рдЦреБрд╢реА рдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рдХрдИ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред

рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдердо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрдгрд┐рддреАрдп рдкрд╣реЗрд▓реА рд╣реИред рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдкрд╣рдЪрд╛рди рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рдХреЛ рдПрдХ рдЕрдХреНрд╖рд░ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдорд╛рди рдЕрдВрдХ - рд╕рдорд╛рди рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЕрд▓рдЧ - рдЕрд▓рдЧ)ред рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдереНрдо рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдРрд╕рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рдЪрд╛рди рд╕рддреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдереНрдо рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдердо "SEND + MORE = MONEY" рд╣реИ, рдЬреЛ 1924 рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рдЧрдгрд┐рддрдЬреНрдЮ рд╣реЗрдирд░реА рдбреБрдбреЗрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдирдХрд╛ (рдХреЗрд╡рд▓) рд╕рдорд╛рдзрд╛рди 9567 + 1085 = 10652 рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╣реЗрд▓реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рде рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдердо рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдФрд░ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд рд╢рдмреНрдж рдпрд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реЛред рдХрдо рд╕реЗ рдХрдо рддреАрди-рдЕрдВрдХреАрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдПрдХ рдкрд╣реЗрд▓реА рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ, рд╣рд╛рде рдкрд░ рдПрдХ рдмрдбрд╝реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде, рд╕реБрдВрджрд░ рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдердореНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдереНрдо рдХреА рд╢реБрд░реБрдЖрдд рдорд┐рд▓рддреА рд╣реИ, рд╕рдорд╛рди рдЪрд┐рд╣реНрди рд╕реЗ рдкрд╣рд▓реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рднреЗрдЬреЗрдВ + рдЕрдзрд┐рдХ", рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрдг рдХреНрд░рд┐рдкреНрдЯрд╛рд░рд┐рдердореНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

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

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдПрдХ рдЪрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ - Habr * Habr

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, x = 7, a = 6, b = 1, p = 8

рдЧрдгрдирд╛ рдкрд╣рд▓реЗ - 7618 * 7618 = 58033924

рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 8 рд╣реИ, рдЬреЛ рдЕрдХреНрд╖рд░ p рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рднреА рд╢рдмреНрдж 5p033924 (рдпрд╛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╢рдмреНрджреЛрдВ рд╡рд╛рд▓реЗ рджреВрд╕рд░реЗ рд╢рдмреНрдж "p" рдФрд░ рдЪреМрдереЗ рдФрд░ рдкрд╛рдВрдЪрд╡реЗрдВ рдЕрдХреНрд╖рд░ рд╕рдВрдпреЛрдЧ рд╕реЗ рдорд┐рд▓рддреЗ-рдЬреБрд▓рддреЗ рд╢рдмреНрдж рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ), рдФрд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ 5, 0, 3, 9, 2, 4 рдЕрдХреНрд╖рд░ x, a рдФрд░ b рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдкрддреНрд░реЛрдВ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд░рдорд╢рдГ 7, 6 рдФрд░ 1 рдЕрдВрдХ рд╣реЛрддреЗ рд╣реИрдВред

рдЬрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд╢рдмреНрджреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ , * рд╣реИрдмрд░ * рд╣реИрдмрд░ = рдЯреНрд░реЛрд▓рд┐рдВрдЧ, 7618 * 7618 = 58033924 ( рдзреНрдпрд╛рди рджреЗрдВ) рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓реЗрдЦрдХ рдХреА рд░рд╛рдп рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреА рд╣реИ ! kriftarifmov)ред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЧреИрд░-рддреБрдЪреНрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХреБрдЫ рдЧреБрдгреЛрдВ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рдмреНрджрдХреЛрд╢ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрдИ рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдВ рднрд░ рдЬрд╛рддрд╛ рд╣реИред

0) рд╢рдмреНрдж_рд╕реВрдЪреА - рд╕рднреА рд╢рдмреНрджрдХреЛрд╢ рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА

1) pattern_index - рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХред рдХрд┐рд╕реА рд╢рдмреНрдж рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:

def pattern(st): d={} rv=[] for l in st: if not(l in d): d[l]=len(d) rv.append(d[l]) return tuple(rv) 


рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдФрд░ рдореВрд▓реНрдп рд╕рднреА рд╢рдмреНрджреЛрдВ рдХрд╛ рд╕реЗрдЯ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢рдмреНрдж_рд╕реВрдЪреА рдореЗрдВ рдЙрдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ) рдПрдХ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЗрд╕ рд╢рдмреНрджрдХреЛрд╖ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЖрдк рдЙрди рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛ рджрд┐рдП рдЧрдП рд╢рдмреНрдж рдпрд╛ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:

 for i in pattern_index.get(pattern(u''),set()): print words_list[i], 


рдХрд╛рд░рд╛рдХрд╛рд╕ рдХрдмрд╛рдХрд╛ рдХреЛрд╕реЗрдХрд╕ рдмрд╛рд▓рдмрд╛рди рдиреЗ рдмрд┐рд▓рд┐рдмрд┐рди рдЧреИрд▓рдЧрди рд░рд╛рдЬрд╕реНрд╡ рдбреНрд░рдо рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛, рдмрдЯреЗрд░ рдмрд╛рдврд╝ рдЖрдп рд░реЛрдЯрд╛рд░ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдХрд╛рд░рд╛рдХрд▓ рдХреЛрд╕реИрдХ рдХрд┐рд▓рд┐рдХрд┐рдпрд╛ рдХрд┐рд▓рд┐рдХрд┐рдпрд╛ рдЖрджреЗрд╢ рдмреАрд▓реЗрдмреА рдСрд░реНрдбрд░ рд░реЛрдЯрд░ рддрд░реНрдХ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИ

2) рдЕрдХреНрд╖рд░_рдЖрд░реНрдбрд░_рдЗрдВрдбреЗрдХреНрд╕ - рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХред рдХреБрдВрдЬреА рд╢рдмреНрдж рдореЗрдВ рдЕрдХреНрд╖рд░ рдФрд░ рдЙрд╕рдХрд╛ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЕрд░реНрде - рд╕рднреА рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ ... рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ) рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкрддреНрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдкрд░ рдЦрдбрд╝рд╛ рд╣реИред

 for i in letters_order_index.get((1,u''),set()): print words_list[i], 


рдмрд╛рдпрдХреЛрд╡ рдХреЗ рдмрдпрд╛рди рдбрд╛рдпрдХ рдПрдХ рдЯреНрд░реЛрдЯрд░ рдереЗ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдХреА рдЬрд▓реНрджреА рд╕реЗ рд╕рд╛рдВрд╕ рд░реЛрдХ рд░рд╣рд╛ рдерд╛, рдзреБрдВрдз рд░рдЧрдбрд╝ рд╕реНрдХреА рд░рд┐рд▓реАрдЬ рдХреЛ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╕реБрдирдиреЗ рдХреЗ рдмрд╛рдж рдЯреНрд░реЙрдХрд░ рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдЬреАрдд рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реНрдХреАрдпрд░ рд╕рд┐рдЪрд╡рд╛ рдиреЗ рд░рд┐рд╣рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рд░реНрд╡рд╛рд╕рди рдЙрдЪреНрдЪрддрдо рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ ...ред

3) рдЕрдХреНрд╖рд░реЛрдВ_рдЕрдХреНрд╖рдп_рдЗрдВрдбреЗрдХреНрд╕ - рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХред рдХреБрдВрдЬреА рдЕрдХреНрд╖рд░ рд╣реИред рдЕрд░реНрде рд╕рднреА рд╢рдмреНрджреЛрдВ рдХрд╛ рд╕реЗрдЯ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ ... itdред) рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЕрдХреНрд╖рд░ рд╣реИред
 for i in letters_existance_index.get((1,u''), set()): print words_list[i], 


рдХреА рдШреЛрд╖рдгрд╛ рдХреА рд╕рдВрдпреБрдХреНрдд рд╕рдВрдпреБрдЧреНрдорди рдХреА рдкреЗрд╢рдХрд╢ рдХреА рд╕рдВрдпреБрдХреНрдд рдПрдХрдЬреБрдЯ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдЕрдЦрд╛рджреНрдп рднрд╛рд░ рд╡рд╣рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдКрдкрд░ рдЙрдард╛рдиреЗ рдХреЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ volumetric detour рд╕рдВрдпреБрдХреНрдд рдЕрдХрдердиреАрдп рдкреНрд░рд╡реЗрд╢ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рд╕рдВрдпреБрдХреНрдд рдПрдХреАрдХреГрдд рдлрд┐рд▓реНрдорд╛рдиреЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдкрд╣реБрдБрдЪ рд▓реЗрдВрд╕ ...

рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреАрдмрджреНрдз рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдореЗрдВ рд╕реЗрдЯ (рд╕реЗрдЯ) рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд╕рд╛рде рдЖрдк рд╕реЗрдЯ - рдпреВрдирд┐рдпрди, рдЪреМрд░рд╛рд╣реЗ, рдЕрдВрддрд░, рдЖрджрд┐ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдкрд╣рд▓реЗ рд╣рдо рдЙрди рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рд╕рдВрд░рдЪрдирд╛ 58033924 рдХреЗ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рд╣рдо рдЗрд╕рдХрд╛ рдЕрдВрддрд░ рд╢рдмреНрдж рдХреЗ рд╕реЗрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рджреВрд╕рд░рд╛ рдЕрдХреНрд╖рд░ "p" рд╣реИ, рдЬреЛ рд╣реБрдЖ рдЙрд╕рд╕реЗ рд╣рдо рдЙрди рд╢рдмреНрджреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдЕрдХреНрд╖рд░ "x" рд╣реИ, "рдП" рдФрд░ "рдмреА"ред рдЕрдВрдд рдореЗрдВ рдЬреЛ рдЖрддрд╛ рд╣реИ рд╡рд╣ x = 7, a = 6, b = 1, p = 8 рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдмреНрдж рд╣реИрдВред


рдФрд░ рдЙрд╕рдХреЗ рдиреАрдЪреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╣реИ
 import re, itertools import codecs from collections import defaultdict from copy import copy def pattern(st): d={} rv=[] for l in st: if not(l in d): d[l]=len(d) rv.append(d[l]) return tuple(rv) def substitutions_generator(st): words = re.split('[-*+]',st) letters = list(set(''.join(words))) first_letters = set([w[0] for w in words]) for comb in itertools.combinations(range(10),len(letters)): d = dict(zip(letters,comb)) if not any(d[k] == 0 for k in first_letters): yield d def eval_substitution(st,substitution): reverse_substitution = {} for k in substitution: reverse_substitution[str(substitution[k])] = k st = st.replace(k,str(substitution[k])) result = str(eval(st)) tojd = st + "=" + result forbidden = set([]) #,      substitution for k in reverse_substitution: if not(k in result): forbidden.add(reverse_substitution[k]) else: result = result.replace(k,reverse_substitution[k]) return result,tojd,forbidden def gen_indexes(path, limit = None): freq_dict = {} pattern_index = defaultdict(set) letters_order_index = defaultdict(set) words_list=[] letters_existance_index = defaultdict(set) for i,l in enumerate(codecs.open(path,"r","utf-8-sig")): if limit and i>limit:break w,n=l.split() words_list.append(w) index = len(words_list)-1 freq_dict[index]=int(n) pattern_index[pattern(w)].add(index) for k in list(enumerate(w)): letters_order_index[k].add(index) for l in w: letters_existance_index[l].add(index) return words_list, pattern_index, letters_order_index, letters_existance_index, freq_dict def generate_cryptarithm(st, indexes): words_list, pattern_index, letters_order_index, letters_existance_index, freq_dict = indexes d=defaultdict(list) for sub in substitutions_generator(st): res,tojd,forbidden = eval_substitution(st,sub) cur_indexes=copy(pattern_index.get(pattern(res),set([]))) if not cur_indexes: continue for lk in list(enumerate(res)): if not(lk[1] in '0123456789'): cur_indexes&=letters_order_index.get(lk,set([])) for l in forbidden: cur_indexes-=letters_existance_index[l] if cur_indexes: for w in cur_indexes: d[w].append((sub,tojd)) for k in sorted(d.keys(), key = lambda x:freq_dict[x], reverse = True): if len(d[k]) ==1: tojd=d[k][0][1] print "%s=%s,%s"%(st,words_list[k],tojd) 


рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рд╕реЗ рджреЛ рдХрд╛рд░реНрдп рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - gen_indexes рдФрд░ generate_cryptarithm ред

рд╣рдо + рдЕрдзрд┐рдХ = рдзрди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рднреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ:

 # -*- coding: utf-8 -*- from cryptarithm import generate_cryptarithm,gen_indexes indexes = gen_indexes("wiki_freq.txt", 400000) l1=[u'',u'',u'',u''] l2=[u'',u'',u'',u'', u''] for w1 in l1: for w2 in l2: generate_cryptarithm(w1+u'+'+w2,indexes) generate_cryptarithm(w1+u'*'+w2,indexes) generate_cryptarithm(w1+u'-'+w2,indexes) 


рд╣рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓реЗрдВрдЧреЗ, рдпрд╣ рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЕрднреА рддрдХ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ = рд░реЛрдмреНрд╕, 43198-505 = 42693

рдХреЛрдб рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ!

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

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


All Articles