 /
 /  
		
		実行時間制限: 2 sec / メモリ制限: 1024 MiB
配点 : 500 点
問題文
正整数 N が与えられます。
1, +, *, (, ) のみからなる数式のうち、値が N となるものの中で、文字列としての長さが最小のものを一つ求めてください。
より厳密には、以下の条件をすべて満たす文字列 S のうち長さが最小のものを一つ求めてください。
- S は下の BNF 記法 の <expr>シンボルに従う文字列である。
- S が表す数式の値は N である。
<expr>   ::= <term> | <expr> "+" <term>
<term>   ::= <factor> | <term> "*" <factor>
<factor> ::= <number> | "(" <expr> ")"
<number> ::= "1" | "1" <number> 
<expr> シンボルに従う文字列として、以下のようなものがあります。
- 1111+111: 1111+111 を表します。
- (1+1)*(1+1): (1+1)\times (1+1) を表します。
- (11+(1+1)*(1+1))+1: (11+(1+1)\times (1+1))+1 を表します。
一方、以下の文字列は <expr> シンボルに従いません。
- (1+1)(1+1)
- 1+2
- 1-1
- 1/1
- )1(
- 1++1
- +1
- (+1)
- 1*+1
制約
- 1\leq N\leq 2000
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
出力
答えを出力せよ。
入力例 1
9
出力例 1
(1+1+1)*(1+1+1)
値が 9 となるような数式は例えば以下のようなものがあります。
- (1+1+1)*(1+1+1)
- 1+1+1+1+1+1+1+1+1
- (1+1)*(1+1)*(1+1)+1
値が 9 となるような数式のうち、長さが最小となるものは (1+1+1)*(1+1+1) です。
入力例 2
11
出力例 2
11
入力例 3
403
出力例 3
1+(1+1+1)*(1+11+11+111)
Score : 500 points
Problem Statement
You are given a positive integer N.
Among all valid arithmetic expressions consisting of the characters 1, +, *, (, and ), find one of the minimum length whose value is N.
More formally, among the strings S satisfying all of the following conditions, find one of the minimum length:
- S conforms to the symbol <expr>in the BNF below.
- The value of the expression represented by S is N.
<expr>   ::= <term> | <expr> "+" <term>
<term>   ::= <factor> | <term> "*" <factor>
<factor> ::= <number> | "(" <expr> ")"
<number> ::= "1" | "1" <number>
Strings that conform to <expr> include:
- 1111+111representing 1111+111.
- (1+1)*(1+1)representing (1+1)\times(1+1).
- (11+(1+1)*(1+1))+1representing (11+(1+1)\times(1+1))+1.
Strings that do not conform to <expr> include:
- (1+1)(1+1)
- 1+2
- 1-1
- 1/1
- )1(
- 1++1
- +1
- (+1)
- 1*+1
Constraints
- 1 \le N \le 2000
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N
Output
Print a solution.
Sample Input 1
9
Sample Output 1
(1+1+1)*(1+1+1)
Expressions whose value is 9 include:
- (1+1+1)*(1+1+1)
- 1+1+1+1+1+1+1+1+1
- (1+1)*(1+1)*(1+1)+1
Among them, a shortest is (1+1+1)*(1+1+1).  
Sample Input 2
11
Sample Output 2
11
Sample Input 3
403
Sample Output 3
1+(1+1+1)*(1+11+11+111)