{"trustable":true,"sections":[{"title":"","value":{"format":"HTML","content":"杨先生希望给他的班级拍照。学生们将排成行,每一行的长度不超过后面一行,并且左端对齐。例如,12名学生可以排成5、3、3和1名学生的行(从后到前)。\r\u003cbr\u003e\u003cpre\u003eX X X X X\r\u003cbr\u003eX X X\r\u003cbr\u003eX X X\r\u003cbr\u003eX\u003c/pre\u003e\r\u003cbr\u003e此外,杨先生希望每一行的学生按照从左到右递减的高度排列。而且,学生的高度应该从后到前递减。思考之后,杨先生发现对于12名学生的例子,至少有两种排列方式(以1为最高等等):\r\u003cbr\u003e\u003cpre\u003e 1 2 3 4 5 1 5 8 11 12\r\u003cbr\u003e 6 7 8 2 6 9\r\u003cbr\u003e 9 10 11 3 7 10\r\u003cbr\u003e12 4\u003c/pre\u003e\r\u003cbr\u003e杨先生想知道对于给定的行排列,学生可能有多少种不同的排列方式。他尝试手动计数,从3、2和1的行开始,发现有16种排列方式:\r\u003cbr\u003e\u003cpre\u003e123 123 124 124 125 125 126 126 134 134 135 135 136 136 145 146\r\u003cbr\u003e45 46 35 36 34 36 34 35 25 26 24 26 24 25 26 25\r\u003cbr\u003e6 5 6 5 6 4 5 4 6 5 6 4 5 4 3 3\u003c/pre\u003e\r\u003cbr\u003e杨先生发现手动计数对于任何合理数量的学生来说都不太有效,所以他请求你帮忙编写一个计算给定行排列下学生不同排列方式数量的计算机程序。"}},{"title":"输入","value":{"format":"HTML","content":"每个问题实例的输入将由两行组成。第一行以十进制整数给出行数k。第二行包含从后到前的行长度(n1、n2、...、nk),以单个空格分隔的十进制整数。问题集以行数为0的行结束。行数永远不会超过5行,学生总数N(行长度之和)最多为30。"}},{"title":"输出","value":{"format":"HTML","content":"每个问题实例的输出应为将N名学生排成给定行,使得每行从左到右、每列从后到前的高度递减的排列方式数量,以十进制整数表示。(假设所有高度都是不同的。)每个问题实例的结果应该在单独的一行上。输入数据将被选择,以便结果始终适合于一个无符号32位整数。"}},{"title":"示例","value":{"format":"HTML","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e1\r\n30\r\n5\r\n1 1 1 1 1\r\n3\r\n3 2 1\r\n4\r\n5 3 3 1\r\n5\r\n6 5 4 3 2\r\n2\r\n15 15\r\n0\r\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e1\r\n1\r\n16\r\n4158\r\n141892608\r\n9694845\r\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e"}}]}