首页 > 试题广场 >

小红的整数操作

[编程题]小红的整数操作
  • 热度指数:145 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个正整数x,她希望你将该数变成y。小红可以进行如下操作:
选择一个正整数p=2^k,在满足x \& p=p的前提下,使得x加上p或者x减去p\&操作为二进制下按位与)。

请你帮小红给出一个修改方案。

输入描述:
两个正整数x,y,用空格隔开。
1\leq x,y \leq 10^{18}


输出描述:
如果无解,请直接输出 -1。
否则第一行输入一个整数t,代表操作次数。
接下来的t行,每行输入一个字符和一个正整数p,代表每次操作。
如果是使得x加上p,则输出"+ p";如果是x减去p,则输出"- p"
你需要保证p满足题目中限制的条件,且操作的次数不超过10^3
有多解时输出任意即可。
示例1

输入

3 8

输出

2
+ 1
+ 4

说明

输出以下也是可以的:
- 1
+ 2
+ 4
示例2

输入

4 5

输出

-1

说明

4 的二进制为"100",显然无法再加上 1 得到 5。