#P50012. 计数(count)
计数(count)
【题目描述】
【】是一名噗叽组选手。
【】学习了递归,他想生成一棵树,于是他写下了这样的代码:
int cnt=0;
int solve(int n){
if(n==0){cnt++;return cnt-1;}
int ls=solve(n-1);int rs=solve(n-1);
adde(ls,rs);return ls;
}
其中 adde(x,y)
表示加入一条连接 的边。
可以发现,如果运行 solve(n)
可以得到一棵有 个点的树,这棵树从 开始编号,【】在 adde
中加入了输出,并把输出重定向到了一个文件,接着调用 solve(1e6)
,然后【】的硬盘就寄掉了。
但是他决定继续思考得到的树。他想知道给出 的情况下,树上有多少个点 满足 在树上的最短路长度等于 。输出对 取模的结果。
然而 可能非常大,所以【】会以以下方式给出 :
对于第 次询问,给出 以及 个两两不同的非负整数 表示 的二进制中为 的位为 。
保证 递增。
【输入格式】
第一行包含两个非负整数 。
接下来 行,每行包含一次询问。
这部分的第 行首先包含一个非负整数 ,接下来 个非负整数 ,最后一个正整数 ,表示询问树上与 距离等于 的点数。
【输出格式】
输出 行,表示每次询问的答案对 取模的结果。
【样例】
4 5
1 1 1
2 0 2 2
3 0 2 3 3
0 2
4 0 1 2 3 5
2
2
4
6
4
询问为
【数据范围】
对于所有数据,保证 ,,,。
子任务编号 | 特殊限制 | 分值 |
---|---|---|
无特殊限制 |