编程题
### 问题描述 丽丽最近研究了一种新的数据压缩算法,这个算法需要使用一个长度为 $n$ 的数组 $a$,其中每个元素都是 $1$ 到 $d$ 之间的整数。压缩过程非常复杂,需要多次使用位运算,具体流程如下: 1. 首先,将 $a$ 数组中的元素按照从小到大的顺序排序,得到一个新的数组 $a'$。 2. 然后,定义一个新的数组 $b$,令 $b_1=a'_1$。对于 $i>1$,$b_i$ 的值为 $b_{i-1}$ 和 $a'_i$ 之间的按位与运算结果。 3. 最后,如果 $b$ 数组中的元素也是按照从小到大的顺序排序的,那么这个压缩过程是有效的。 丽丽想知道,在保证压缩过程有效的情况下,有多少种不同的 $a$ 数组可以用于丽丽压缩。由于结果可能非常大,你需要将答案对给定的模数进行取模。 更换故事为数据压缩算法,并修改问题描述,但算法本身的逻辑和操作不变。现在你可以继续提问。 ### 输入格式 第一行包含一个整数 $t$($1\leq t \leq 100$),表示共有 $t$ 组测试数据。 接下来 $t$ 行,每行包含两个整数 $d$ 和 $m$($1\leq d,m \leq 10^3$),含义如上文所述。 ### 输出格式 对于每组测试数据,输出一个整数,表示符合要求的 $a$ 数组的数量对 $m$ 取模的结果。 ### 样例输入 ``` 2 3 100000007 5 998244353 ``` ### 样例输出 ``` 5 17 ```
查看答案
赣ICP备20007335号-2