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. Angular : IOC的方式:依赖注入

    依赖注入 @Component, @Injectable 可以允许别的声明在providers里面的Service等注入到被这两个装饰器装饰的类中 Service等可以被声明在app-module.t ...

  2. Symfony FOSUserBundle用户登录验证

    symfony是一个由组件构成的框架,登录验证的也是由一些组件构成,下面就介绍一下FOSUserBundle的使用. 以symfony 3.3为例, 首先我们需要先安装一下FOSUserBundle. ...

  3. springboot学习(2)

    WebMvcConfigurerAdapter 在springboot2.0及以上版本过时问题 WebMvcConfigurerAdapter已经过时,替代方案: 1 实现 WebMvcConfigu ...

  4. Redis 在springBoot中的一个使用示例

    在现系统中使用了一个字典表,更新或插入字典表需要做Redis缓存 @Override @Cache(name = Constants.REDIS_PREFIX_DIC, desc = "变更 ...

  5. 【Java】关于Spring框架的总结 (一)

    本文总结一些关于Spring框架的理解,注意点及基础操作.如果有不对的地方,欢迎批评和建议.大家一起努力吧! Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创 ...

  6. 初步学习pg_control文件之二

    接前文:初步认识pg_control文件 继续学习,pg_control文件在何处形成的?是在initdb的时候,运用的函数如下: /* * This func must be called ONCE ...

  7. Linux 下 PHP 扩展Soap 编译安装

    1.进入 PHP 的软件包 pdo 扩展目录中(注:不是 PHP 安装目录) [root@tester /]# /home/tdweb/php-5.4.34/ext/soap 执行 phpize 命令 ...

  8. exchange 2007迁移到2010

    标签:exchange 2007 2010 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zpf666.blog.51cto.c ...

  9. mcrouter facebook 开源的企业级memcached代理

    原文地址:https://code.facebook.com/posts/296442737213493/introducing-mcrouter-a-memcached-protocol-route ...

  10. 08-Mysql数据库----完整性约束

    总结:      1,not null 不能插入空,不设置可空       2,unique  单列唯一 create table department(name char(10) unique); ...