4 thought

Write a program which, given an integer $n$ as input, will produce a mathematical expression whose solution is $n$. The solution is restricted to using exactly four $4$’s and exactly three of the binary operations selected from the set $\{ *, +, -, /\} $. The number $4$ is the ONLY number you can use. You are not allowed to concatenate fours to generate other numbers, such as $44$ or $444$.

For example given $n=0$, a solution is $4 * 4 - 4 * 4 = 0$. Given $n=7$, a solution is $4 + 4 - 4~ /~ 4 = 7$. Division is considered truncating integer division, so that $1/4$ is $0$ (instead of $0.25$). Assume the usual precedence of operations so that $4 + 4 * 4 = 20$, not $32$. Not all integer inputs have solutions using four $4$’s with the aforementioned restrictions (consider $n=11$).

*Hint: Using your forehead and some forethought should
make an answer forthcoming. When in doubt use the
fourth.*

Input begins with an integer $1 \leq m \leq 1\, 000$, indicating the number of test cases that follow. Each of the next $m$ lines contain exactly one integer value for $n$ in the range $-1\, 000\, 000 \leq n \leq 1\, 000\, 000$.

For each test case print one line of output containing
either an equation using four $4$’s to reach the target number or
the phrase `no solution`. Print the equation
following the format of the sample output; use spaces to
separate the numbers and symbols printed. If there is more than
one such equation which evaluates to the target integer, print
any one of them.

Sample Input 1 | Sample Output 1 |
---|---|

5 9 0 7 11 24 |
4 + 4 + 4 / 4 = 9 4 * 4 - 4 * 4 = 0 4 + 4 - 4 / 4 = 7 no solution 4 * 4 + 4 + 4 = 24 |