您的位置:首页 > 编程语言

编程之美初赛第二场 集合

2014-04-20 13:59 162 查看


题目3 : 集合

时间限制:12000ms
单点时限:6000ms
内存限制:256MB


描述

统计满足下列条件的集合对(A, B)的数量:

A,B都是{1,
2, …, N}的子集;

A,B没有公共的元素;

f(A)<= f(B)。f(S)定义为S中所有元素的按位异或和。例如, f({})
= 0, f({1, 3}) = 2。

因为答案可能很大,你只需要求出它除以M的余数。


输入

第一行一个整数T (1 ≤ T ≤ 10),表示数据组数。
接下来是T组输入数据,测试数据之间没有空行。
每组数据格式如下:
仅一行,2个整数N和M (1 ≤ M ≤ 108)。


输出

对每组数据,先输出“Case x: ”,然后接一个整数,表示所求的结果。


数据范围

小数据:1 ≤ N ≤ 20
大数据:1 ≤ N < 212



样例输入
1
3 100000000


样例输出
Case 1: 18
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程之美 C++ 算法