300699: CF132D. Constants in the language of Shakespeare
Memory Limit:256 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Constants in the language of Shakespeare
题意翻译
给出一个长度为 $n(1\le n\le1e6)$ 的 $01$ 串,表示一个二进制串。 求表示此二进制串最少需要多少个**不同** $2$ 的次幂相加/相减操作。 要求输出最小操作次数以及相应的相加/相减的操作,输出顺序随意。题目描述
Shakespeare is a widely known esoteric programming language in which programs look like plays by Shakespeare, and numbers are given by combinations of ornate epithets. In this problem we will have a closer look at the way the numbers are described in Shakespeare. Each constant in Shakespeare is created from non-negative powers of 2 using arithmetic operations. For simplicity we'll allow only addition and subtraction and will look for a representation of the given number which requires a minimal number of operations. You are given an integer $ n $ . You have to represent it as $ n=a_{1}+a_{2}+...+a_{m} $ , where each of $ a_{i} $ is a non-negative power of 2, possibly multiplied by -1. Find a representation which minimizes the value of $ m $ .输入输出格式
输入格式
The only line of input contains a positive integer $ n $ , written as its binary notation. The length of the notation is at most $ 10^{6} $ . The first digit of the notation is guaranteed to be 1.
输出格式
Output the required minimal $ m $ . After it output $ m $ lines. Each line has to be formatted as "+2^x" or "-2^x", where $ x $ is the power coefficient of the corresponding term. The order of the lines doesn't matter.
输入输出样例
输入样例 #1
1111
输出样例 #1
2
+2^4
-2^0
输入样例 #2
1010011
输出样例 #2
4
+2^0
+2^1
+2^4
+2^6