最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 寻找整数

C++ 少儿编程 1131浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

给定整数$m,k$,求出正整数$n$使得$n+1,n+2,…,2n$ 中恰好有$m$个数在二进制下恰好有$k$个$1$。有多组数据。

【输入】

第一行一个整数 $t$ 表示数据组数。接下来 $t$ 行每行两个整数$m,k$。

【输出】

每组数据输出一行两个整数,第一个数表示$2^{64}-1$范围内任意一个满足条件的 $n$,第二个数表示满足条件的 $n$ 的个数(无穷多用$-1$表示)。保证$10^{18}$以内存在满足条件的 $n$。

如果每组数据第一个数全部正确,得$4$分。

如果每组数据第二个数全部正确,得$6$分。

【输入样例】

1
1 2

【输出样例】

2 1

【提示】

【数据规模】

对于10%的数据,$k=2$。

对于20%的数据,$k≤3$。

对于另外50%的数据,保证满足条件的 $n$ 均在$10^{18}$以内。

对于100%的数据,$t≤2000,0≤m≤10^{18},1≤k≤64$。

您必须 登录 才能发表评论!