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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЫрд╣ рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рд╣рдо C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВ рдЕрднреА рднреА рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдБред рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреБрд░рд╛ рдпрд╛ рдХреЗрд╡рд▓ рдЧреИрд░-рдЗрд╖реНрдЯрддрдо рдХреЛрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдХрд╛рдлреА рддреБрдЪреНрдЫ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЫреЛрдбрд╝рдирд╛, рдЕрдЧрд▓реЗ рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреЗрдбрд╝реЛрдВ рдХреЗ рдиреЛрдбреНрд╕ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдХреЛрд╖реНрдардХ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкрд╛рдБрдЪ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ: рд╕рдВрдШрдирди, рдЬреЛрдбрд╝, рдШрдЯрд╛рд╡, рдЧреБрдгрд╛ рдФрд░ рднрд╛рдЧред рдпреВрдирд┐рдХ рдорд╛рдЗрдирд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╛рдВрдЯрддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣реА рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рдмрд╛рдПрдВ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдПрдВ, рдпрд╛рдиреА рдкрд╛рдВрдЪ рдмрд╛рд░ред рд╕рдмрдЯреНрд░реАрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рднреА рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред
рдкреЗрдбрд╝ рдХреА рдкреАрдврд╝реАvoid BinTree::buildNext() { if (type == NUMBER)
рдЧрдгрдирд╛ рднреА рдирд╣реАрдВ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред
рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдереА: рдПрдХ рд╕рд┐рд▓рд┐рдХреЙрди рджреЛрд╕реНрдд рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╛рд╕рди рджрд┐рдпрд╛ рдХрд┐ (1+ (2 + 3)) рдФрд░ ((1 + 2) +3) рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рдереАрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЛрд╖реНрдардХ рдХреА "рд╕реНрдорд╛рд░реНрдЯ" рд╡реНрдпрд╡рд╕реНрдерд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ std :: set рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред
рдХреЛрд╖реНрдардХ рд╕рдВрд╣рд┐рддрд╛ std::string BinTree::toString(bool parentheses) { switch (type) { case CONCAT: return left->toString() + right->toString(); case ADD: { std::string leftStr = left->toString(!(left->getType() == ADD || left->getType() == SUB)), rightStr = right->toString(!(right->getType() == ADD || right->getType() == SUB)); return (parentheses?"(":"") + leftStr + operationSymbol[type] + rightStr + (parentheses?")":""); } case SUB: { std::string leftStr = left->toString(!(left->getType() == ADD || left->getType() == SUB)); return (parentheses?"(":"") + leftStr + operationSymbol[type] + right->toString() + (parentheses?")":""); } case MUL: { std::string leftStr = left->toString(!(left->getType() == MUL || left->getType() == DIV)), rightStr = right->toString(!(right->getType() == MUL || right->getType() == DIV)); return (parentheses?"(":"") + leftStr + operationSymbol[type] + rightStr + (parentheses?")":""); } case DIV: return (parentheses?"(":"") + left->toString() + operationSymbol[type] + right->toString() + (parentheses?")":""); case NUMBER: { char str[2] = {(char)(digit[0]+'0'), '\0'}; return str; } default: ; } throw BinTreeException(); }
рджреЗрдЦрд╛!
рдХреЙрд▓ рдХреЛрдб int main() { std::string input; std::cin >> input; std::cout << busPuzzleSolve(input); return 0; } std::string busPuzzleSolve(std::string input) { return BinTree(input.c_str()).solve(); }
рдкрд░рд┐рдгрд╛рдо 123654 ((((1*2)+3)*6)-5)*4 ((1*(2+(3*6)))+5)*4 ((1*(2+3)*6)-5)*4 ((1*(2-3))+6)*5*4 ((1*2)+(3*6)+5)*4 ((1*2)-(3-6))*5*4 ((1*2)-3+6)*5*4 ((1/(2-3))+6)*5*4 ((12*3)-(6+5))*4 ((12*3)-6-5)*4 (1+23+6-5)*4 (1-((2*3)-(6*5)))*4 (1-(2*3)+(6*5))*4 (12+(3*6)-5)*4 1*(((2+3)*6)-5)*4 1*(2+(3*6)+5)*4 1*(2-(3-6))*5*4 1*(2-3+6)*5*4 1+((2+3+6)*(5+4))
Rar рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдХрд╛рдИрдбреНрд░рд╛рдЗрд╡ рдкрд░ рдХреЛрдб (+ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛрдб :: рдмреНрд▓реЙрдХ) (~ 2.56 KiB)редрдкрд╛рд╕реНрдЯрдмрд┐рди рдХреЛрдбред