题目名称 2173. And Link
输入输出 and.in/out
难度等级 ★★★
时间限制 5000 ms (5 s)
内存限制 256 MiB
测试数据 20
题目来源 GravatarZayin 于2016-03-07加入
开放分组 全部用户
提交状态
分类标签
动态规划 递推
分享题解
通过:2, 提交:7, 通过率:28.57%
Gravatarzhengtn03 100 8.607 s 38.46 MiB C++
GravatarZayin 100 18.081 s 38.46 MiB C++
Gravatarzhengtn03 95 12.733 s 38.46 MiB C++
Gravatarzhengtn03 70 34.546 s 38.46 MiB C++
Gravatarzhengtn03 40 14.430 s 38.46 MiB C++
Gravatarzhengtn03 5 11.272 s 4.13 MiB C++
GravatarTARDIS 0 0.004 s 0.31 MiB C++
关于 And Link 的近10条评论(全部评论)

2173. And Link

★★★   输入文件:and.in   输出文件:and.out   简单对比
时间限制:5 s   内存限制:256 MiB

【题目描述】


给定两个整数 N 和 K。

请你计算有多少长度为 K 的序列 A1, A2, ..., AK,(0<=Ai) 满足:

    A1+ A2+ ...+ AK = N。

并且对于任意的 i = 1, ..., k - 1 有 Ai  And  Ai + 1 = Ai + 1

【提示】

 

And 是按位与操作。

Pascal 为 and  ,C 和 C++为 &。

【输入格式】


此题有多组数据

第一行包含一个整数 T ,表示测试数据组数。

接下来有 T 行,每行包括两个整数 N 和 K ,意义如题目所述。

【输出格式】


对于每组测试数据,输出一行表示对应的答案。考虑答案可能很大,输出模 1000000009 后的结果。

【样例输入】


3

2 3

2 4

3 3

【样例输出】


2

2

2

【样例解释】


对于第一个数据,有两种方案:(1,1,0),(2,0,0);

对于第二个数据,有两种方案:(1,1,0,0),(2,0,0,0);

对于第三个数据,有两种方案:(1,1,1),(3,0,0)。

【数据范围】


对于10%的数据,N<=10,K<=10 ;

对于30%的数据,N<=100,K<=1000 ;

对于50%的数据,N<=10000,K<=100000 ;

对于70%的数据,N<=1000000,K<=10000000 ;

对于100%的数据,N<=10000000,K<=1000000000,T<=100 。

【来源】


改编自 hihoCoder Challenge 5 .