题目:
X 星球的机器人表演拉拉队有两种服装,A 和 B。
他们这次表演的是搭机器人塔。
类似:
A
B B
A B A
A A B B
B B B A B
A B A B B A
队内的组塔规则是:
A 只能站在 AA 或 BB 的肩上。
B 只能站在 AB 或 BA 的肩上。
你的任务是帮助拉拉队计算一下,在给定 A 与 B 的人数时,可以组成多少种花样的塔。
输入描述
输入一行两个整数 M,NM,N(0<M,N<5000<M,N<500),分别表示 A、B 的人数,保证人数合理性。
输出描述
要求输出一个整数,表示可以产生的花样种数。
输入输出样例
示例
输入
1 2
输出
3
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
思想:
如果从上面向下面进行枚举,A下面有AA和BB有两种情况,B下面有AB和BA两种情况。这是不定的,需要考虑多种情况。但是如果从下往上考虑,如遇到AA或BB则上面只能是A,遇到BA或AB则只能是B。所以从下面考虑的话这种情况直接就定了,不费事。
同样我们很容易发现如果AB的这种状态与01很相似,且发现如果遇到相同如AA或BB则结果是A。可以看成00或11异或(^)结果为0。
于是这道题很好解了,我们枚举所有最后一层的状态,用0表示A,1表示B。然后内层再