number

题目描述

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

输入数据

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

输出数据

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

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

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

数据范围

对于 \(10\%\) 的数据, \(k=2\)。

对于 \(20\%\) 的数据, \(k<=3\)。

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

对于 \(100\%\) 的数据, \(t<=2000\), $0<=m<=10^{18}, \(1<=k<=64\)。


打表吧。

然后发现\(k\)一定时,\(m\)随\(n\)增大在整数域上连续增大。

进一步发现,其实\(m\)变化时的\(n\)是二进制下\(k-1\)个\(1\)从小到大排序而成的

于是可以预处理组合数求一下啦

要特判\(m=0\)


Code:

#include <cstdio>
#define ll long long
ll C[70][70];
void init()
{
C[0][0]=1;
for(int i=1;i<=67;i++)
{
C[i][0]=1;
for(int j=1;j<=i;j++)
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
}
int t;
ll cal(int k,ll m)
{
if(m==-1) return 0;
ll ans=0;
while(k)
{
int pos=k;
while(C[pos][k]<=m) ++pos;
--pos;
ans|=1ll<<pos;
m-=C[pos][k];
k--;
}
return ans;
}
int main()
{
init();
scanf("%d",&t);
while(t--)
{
ll m;int k;
scanf("%lld%d",&m,&k);
--k;
if(!k)
printf("1 -1\n");
else
{
ll r=cal(k,m),l=cal(k,m-1);
printf("%lld %lld\n",l+1ll,r-l);
}
}
return 0;
}

2018.10.13

number 解题报告的更多相关文章

  1. 【九度OJ】题目1040:Prime Number 解题报告

    [九度OJ]题目1040:Prime Number 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1040 题目描述: Ou ...

  2. 【LeetCode】Largest Number 解题报告

    [LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...

  3. 【LeetCode】306. Additive Number 解题报告(Python)

    [LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...

  4. USACO Section1.2 Name That Number 解题报告

    namenum解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  5. ACM Minimum Inversion Number 解题报告 -线段树

    C - Minimum Inversion Number Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &a ...

  6. 【LeetCode】263. Ugly Number 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 除去2,3,5因子 日期 [LeetCode] 题目 ...

  7. 【LeetCode】 202. Happy Number 解题报告(Java & Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 迭代 日期 [LeetCode] 题目地址:h ...

  8. 【LeetCode】246. Strobogrammatic Number 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  9. 【LeetCode】1056. Confusing Number 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  10. 【LeetCode】171. Excel Sheet Column Number 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目大意 解题方法 Java解法 Python解法 日期 [LeetCode] 题 ...

随机推荐

  1. phpstudy启动时Apache启动不了

    打开cmd,输入:D:\phpStudy\PHPTutorial\Apache\bin\httpd.exe -t 回车,即显示错误信息 说是我们的有一个文件目录不存在或者不可读取, 出现这个一般有两种 ...

  2. eclipse全选包

    按住shift键,点击第一个jar包,然后点击最后一个jar包,就全选了所有jar包,然后添加build path 添加到类路径

  3. Linux基础(02)、MTPutty安装和使用

    准备工具 1. MTPutty的安装包 2. Putty.exe程序 作用:远程连接操作Centos 安装MTPutty 1.根据提示,一直下一步至下图:选择putty.exe文件的位置即可. 2.选 ...

  4. 初识python 面向对象

    what the f**k!!这个知识点学不好的最大元凶就是,我还单身??? python基础(四): 面向对象的三个特点: 封装,继承,多态 类: 对象是面向对象编程的核心,在使用对象的过程中,为了 ...

  5. WHERE条件中or与union引起的全表扫描的问题

    说起数据库的SQL语句执行效率的问题,就不得不提where条件语句中的or(逻辑或)引起的全表扫描问题,从而导致效率下降. 在以往绝大多数的资料中,大多数人的建议是使用 union 代替 or ,以解 ...

  6. C语言Windows程序开发—TextOut函数介绍【第02天】

    (一)TextOut函数的参数介绍: BOOL TextOut ( //如果函数调用成功,返回TRUE,否则,返回FALSE HDC hdc, //用于显示字符串的控件ID int nXStart, ...

  7. iScroll实现下拉刷新上拉加载

    前言 初学iscroll这个控件,给我的一个感觉还是蛮不错的. 什么是iScroll:是目前最成熟的自定义滚动解决方案之一,在移动端和PC有很好的兼容性.iScroll官方提供了5个不同的版本 isc ...

  8. [BZOJ1040][ZJOI2008]骑士(树形DP)

    对于一个联通块内,有且只有一个环,即n个点n条边 那么找到那个环,然后任意断一条边,这个联通块就变成一棵树了,然后做树形DP就行了 对于断的边要记录下来DP时特判 Code #include < ...

  9. 前端面试题目汇总摘录(JS 基础篇 —— 2018.11.02更新)

    温故而知新,保持空杯心态 JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string type ...

  10. HBase 高级架构解析

    整体框架 使用 ZooKeeper 框架协助 RegionServer(类似于HDFS的nodemanager)用户请求从 Client 到 Zookeeper 进行判断数据属于哪一个 Region ...