[HDOJ3204]Expression Counting
YY 是个聪明的孩子。某天他觉得很无聊,于是随手写下了一些表达式。后来他发现,虽然有些表达式写法不同,但它们本质上是相同的,比如 a+(b-c) 和 (a+b)-c。
经过几次尝试之后,他对此产生了兴趣,想知道由 个不同运算对象组成的本质不同的表达式共有多少个。
为使问题简单些,只有 +、-、*、/ 和括号是允许的。
输入格式
输入包含多组测试数据。每组测试数据只有一行,包含一个整数 。
输入以一行一个 结束。
输出格式
对每组测试数据输出一行一个整数,表示由 个不同运算对象组成的本质不同的表达式的个数。
因为答案可能很大,只需输出对 取模后的值。
样例输入
1
2
3
4
0
样例输出
1
6
68
1170
样例解释
二元的表达式共 个:
a+b, a-b, b-a, a*b, a/b, b/a.
三元的表达式共 个:
a+b+c, a+b-c, a-b+c, a-b-c, b-a+c, b-a-c, c-a-b,
a*b*c, a*b/c, a/b*c, a/b/c, b/a*c, b/a/c, c/a/b,
a+b*c, b+a*c, c+a*b,
a+b/c, a+c/b, b+a/c, b+c/a, c+a/b, c+b/a,
a-b*c, b-a*c, c-a*b,
a-b/c, a-c/b, b-a/c, b-c/a, c-a/b, c-b/a,
b*c-a, a*c-b, a*b-c,
b/c-a, c/b-a, a/c-b, c/a-b, a/b-c, b/a-c,
a*(b+c), b*(a+c), c*(a+b),
a*(b-c), a*(c-b), b*(a-c), b*(c-a), c*(a-b), c*(b-a),
a/(b+c), b/(a+c), c/(a+b),
a/(b-c), a/(c-b), b/(a-c), b/(c-a), c/(a-b), c/(b-a),
(b+c)/a, (a+c)/b, (a+b)/c,
(b-c)/a, (c-b)/a, (a-c)/b, (c-a)/b, (a-b)/c, (b-a)/c.
注意四元的表达式中 (a-b)/(c-d) 和 (b-a)/(d-c) 是相同的,而 a/b-c/d 和 b/a-d/c 是不同的。
数据范围
- 。
来源与许可
本题为 HDOJ 3204 试题「Expression Counting」,题面与测试数据整理自 BZOJ 1847。
样例 1
输入
1
2
3
4
0
输出
1
6
68
1170