#P2019. 紫色百合(fiorentina)

紫色百合(fiorentina)

【问题描述】

​ “牵着你的手的是她,路边开满了紫色的百合花……”

​ 你从梦中醒来,却依然忘不了梦中的~她~百合花,每朵百合花都有一个权值,在二进制下写成一行‘1’,第i朵紫色百合的权值在二进制下写成i个‘1’。你想挑出其中一些组成“一束百合花”且价值在二进制下恰好为一个‘1’后面P个‘0’,那么有多少种挑选方案呢?

定义“一束百合花”的价值为这些百合花组成的集合的所有子集的权值乘积的和(空集的权值乘积算1)。如价值为1和3组成的一束百合花价值为1+1+3+1*3=8

【输入格式】

一行两个正整数N,P,含义如题目中所示

【输出格式】

一个整数代表方案数模 998244353 的结果

【样例输入1】

3 3

【样例输出1】

2

【样例输入2】

233 666

【样例输出2】

572514965

【数据范围与约定】

测试点编号 N P
1 ≤ 8 ≤ 100
2 ≤ 12
3 ≤ 15
4 ≤ 100
5 ≤ 1000
6 ≤ 2000
7 ≤ 100000
8
9
10