#iroha2019day4d. [iroha2019_day4_d]揺れる街、増える敵

[iroha2019_day4_d]揺れる街、増える敵

ストーリー

「究竟发生了什么……」回去的路上,小日向开始嘟嘟囔囔地说道。「刚才那个怪物,明显有问题」「那种东西,不应该存在于这个世界」「它就像一个bug……」

她的话被一阵轰鸣声打断。而且,这次不只一次。我们相互对视,开始奔跑。

问题描述

在T个城市中,分别出现了敌人。

第i个城市出现的敌人呈一列排列成方块状,初始方块的数量为1到Li个。城市中已经破坏了敌人方块中的0个或更多个,敌人被分割成了若干个部分。当敌人方块的数量为L的时候,如果从端点开始破坏第i个方块,则敌人会被分割成两个敌人,其中一个的方块数量为i-1,另一个的方块数量为L-i(注意:如果方块数量为0,敌人将消失)。

然而,敌人一旦被分割,它们就会变得更加强大。具体地说,当敌人被分割成p1、p2、……、pn个部分时,整体的敌人强度将变为p1 × p2 × … × pn。

现在,第i个城市的敌人强度超过了2^Ai。对于每个出现在T个城市中的敌人,求可能作为敌人初始方块数量的方式有多少种。

约束条件

  • 输入都是整数。
  • 1≤T≤300
  • 1≤Li≤10^9,0≤Ai≤10^9

输入

输入包含以下内容:

T
L1 A1
L2 A2
:
LT AT

输出

输出T行,第i行输出第i个城市出现的敌人的答案。


输入示例

4
9 3
13 4
11 6
11235813 213455

输出示例

3
5
0
10702177

第1个城市出现的敌人的初始方块数量有3种可能:7、8、9。

分别对应以下的破坏方式满足条件(o表示方块未被破坏,x表示方块被破坏):

  • 初始方块数量为7:ooxoooo(敌人强度为8)
  • 初始方块数量为8:ooxooxoo(敌人强度为8)
  • 初始方块数量为9:oooxoxooo(敌人强度为9)

第2个城市出现的敌人的初始方块数量有5种可能:9、10、11、12、13。

分别对应以下的破坏方式满足条件:

  • 初始方块数量为9:ooooxoooo(敌人强度为16)
  • 初始方块数量为10:ooxooxoooo(敌人强度为16)
  • 初始方块数量为11:oooxooooxoo(敌人强度为24)
  • 初始方块数量为12:oooooooooxoo(敌人强度为18)
  • 初始方块数量为13:ooooxoooooooo(敌人强度为32)

第3个城市出现的敌人的初始方块数量有0种可能。


解答

解答