UVA11166 带符号二进制 Power Signs
题目背景
> “Increase my killing power,eh?”
>
> ——Homer Simpson
(好像是辛普森一家的台词)
题目描述
你可能已经熟悉整数的二进制表示了,即将一个非负整数 $n$ 写成 $\sum a_i2^i$ 的形式(其中每个 $a_i$ 只会是 $0$ 或者 $1$)。
在这个问题中,我们考虑一种带符号的二进制,即上述写法不变,但 $a_i$ 可以为 $-1$,$0$ 或者 $1$。
我们将一个带符号的二进制表示法写为 $(a_k,a_{k-1},...,a_1,a_0)$。例如,$13$ 可以表示为 $(1,0,0,-1,-1)$,即 $2^4-2^1-2^0$。
一个数的二进制表示法是唯一的,但带符号的二进制表示法不是,在目前的应用中(比如密码学),我们尽可能的尝试减少带符号的二进制表示法中非 ```0``` 字符的数量。比如,表示 $7$ 时,我们认为 $(1,0,0,-1)$ 优于 $(1,1,1)$。
现在你要写一个程序,找到这样的最优表示法。
输入格式
输入文件包含若干个测试数据(最多 $25$ 个),每个测试数据包含一行,其中有一个正数 $n \leq 2^{50000}$ 表示成二进制,没有前导 $0$。输入以一个只包含 ```0``` 的测试数据结束,最后一个测试数据不应该被处理。
输出格式
对于每一个测试数据,输出一行 $n$ 的最优表示法,用 ```-``` 表示 $-1$,```0``` 表示 $0$,```+``` 表示 $1$。这个数字不应该有前导 $0$。
如果有多个答案,输出其中字典序最小的答案(以 ASCII 排序)。