CFCF2203C.Test Generator

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你正在开发一个测试数据生成器。它接收两个整数 ssmm 作为输入。你需要构造一个由非负整数组成的数组 a=[a1,a2,,an]a = [a_{1}, a_{2}, \dots, a_{n}],使得:

  1. i=1nai=s\displaystyle\sum_{i=1}^{n} a_i = s
  2. 对于每个 ii,满足条件 ai&m=aia_i \,\&\, m = a_i,其中 &\& 表示按位与运算。

换句话说,在每个数 aia_i 中,被设为 11 的位只能出现在数字 mm 中也被设为 11 的那些位上。

判断是否存在至少一个这样的数组。如果存在,找出最小的可能的长度 nn

输入格式

每个测试点包含多个测试用例。第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例由一行包含两个整数 ssmm1s,m10181 \le s, m \le 10^{18})组成——生成器的参数。

输出格式

对于每个测试用例,输出一个整数:

  • 如果这样的数组不存在,输出 1-1
  • 否则,输出最小的可能的 nn——数组的长度。

输入输出样例

  • 输入#1

    6
    13 5
    13 3
    13 6
    1000000007 2776648
    99999999999 1
    998244353 1557287

    输出#1

    3
    5
    -1
    -1
    99999999999
    642

说明/提示

让我们分析一些示例:

  • 对于 s=13,m=5s = 13, m = 5,答案为 33,因为存在一个合适的数组 a=[5,4,4]a = [5, 4, 4]
  • 对于 s=13,m=3s = 13, m = 3,答案为 55,因为存在一个合适的数组 a=[3,3,3,3,1]a = [3, 3, 3, 3, 1]
  • 对于 s=13,m=6s = 13, m = 6,答案为 1-1,因为不存在合适的数组。
首页