编程题
单调回文分解 ## 来源 Greater New York 2002 (ZOJ1353) ## 题目描述 一串正整数序列如果从左往右读过去,和从右往左读过去,完全是一样的,则这串正整数称为是回文的,例如: 23 11 15 1 37 37 1 15 11 23 1 1 2 3 4 7 7 10 7 7 4 3 2 1 1 一个回文正整数串如果从左边到中间这些数是非递减的,从中间到右边的数是非递增的,那么这个回文正整数串就称为是单调回文的。例如上述的2个例子中,第1个例子不是单调回文的,而第2个例子是单调回文的。 一个单调回文正整数串,如果所有正整数之和为N,则称它是整数N的单调回文分解。例如,1~8的所有单调回文分解为: 1: (1) 2: (2), (1 1) 3: (3), (1 1 1) 4: (4), (1 2 1), (2 2), (1 1 1 1) 5: (5), (1 3 1), (1 1 1 1 1) 6: (6), (1 4 1), (2 2 2), (1 1 2 1 1), (3 3), (1 2 2 1), ( 1 1 1 1 1 1) 7: (7), (1 5 1), (2 3 2), (1 1 3 1 1), (1 1 1 1 1 1 1) 8: (8), (1 6 1), (2 4 2), (1 1 4 1 1), (1 2 2 2 1), (1 1 1 2 1 1 1), ( 4 4), (1 3 3 1), (2 2 2 2), (1 1 2 2 1 1), (1 1 1 1 1 1 1 1) 编写一个程序,计算一个正整数的单调回文分解的个数。 ## 输入描述 输入文件中包括许多正整数,每个正整数占一行,最后一行为0,表示输入文件的结束。 ## 输出描述 对每个正整数,首先输出该整数,然后是一个空格,最后是这个数的单调回文分解的个数。 ## 样例输入 ```txt 8 213 0 ``` ## 样例输出 ```txt 8 11 213 1055852590 ```
查看答案
赣ICP备20007335号-2