首页 > 试题广场 >

小红的整数操作

[编程题]小红的整数操作
  • 热度指数:155 时间限制: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。
头像 牛客题解官
发表于 2026-03-12 15:24:03
小红的整数操作 [题目链接](https://www.nowcoder.com/practice/f817bcf2052b42e6a1bab1f460ea6042) 思路 给定正整数 和 ,每次操作可以选一个 ,要求当前 的第 位为 (即 ),然后令 加上或减去 。问能否在 次操作内把 展开全文