ZIO 2012:玩具套装

时间:2016-11-19 05:33:13

标签: algorithm

玩具套装包含显示1到9数字的块。有很多块 显示每个数字和显示相同数字的块是无法区分的。我们 想要检查顺序排列块的不同方式的数量 显示的数字加起来是一个固定的总和。 例如,假设总和为4.有8种不同的安排:

1 1 1 1

1 1 2

1 2 1

1 3

2 1 1

2 2

3 1

4

行按照字典顺序排列(也就是说,如果它们出现的话就会出现 在字典中列出)。 在下面的每个案例中,您都会得到所需的总和S和数字K.您有 写下所有加到S的安排时写下Kth线 如上所述。例如,如果S为4且K为5,则答案为2 1 1.记住 S可能很大,但块上的数字只有1到9 (a)S = 9,K = 156
(b)S = 11,K = 881
(c)S = 14,K = 4583

所以基本上每种情况(1111,112等)在数学中也称为数字的分区,尽管112和121计为相同的分区(在数学中),这里我将不得不考虑它们不同的分区。在这种情况下,我们正在考虑不同的方式我尝试通过尝试找到一个公共模式来尝试强制执行,如果我们考虑一个数组par []包含9的所有分区(问题的第一部分),按照字典顺序排列,par [0] = 111111111, par [1] = 11111112 par [2] - par [3]将有2个术语,包括11111121和1111113.如果我们仔细查看最后2位数,我们会注意到它们是3的分区。所以基本上是从1开始的部分将遵循1 + 1的顺序(2的分区)+ 2(3的分区)+ 4(4的分区),依此类推,增加2的幂,直到par [127] = 18,no。分区为8.我们注意到在添加它们时我们获得2的幂。但是,我似乎停留在计算位置156,因为par [128] = 21111111,并且我无法在我的方法中进一步移动。重现关系或伪代码将是最受欢迎的。作为整数的答案可在线获得,但不是算法。请帮帮我。

来源:http://www.iarcs.org.in/inoi/2012/zio2012/zio2012-qpaper.pdf
解决方案:http://www.iarcs.org.in/inoi/2012/zio2012/zio2012-solutions.pdf

1 个答案:

答案 0 :(得分:0)

提示:

partitions of 1
1      the number itself

partitions of 2
11     1 followed by partitions of 1
2      the number itself

partitions of 3
111    1 followed by partitions of 2
12     .
21     2 followed by partitions of 1
3      the number itself

partitions of 4
1111   1 followed by partitions of 3
112    .
121    .
13     .
211    2 followed by partitions of 2
22     .
31     3 followed by partitions of 1
4      the number itself

partitions of 5
11111   1 followed by partitions of 4
1112    .
1121    .
113     .
1211    . 
122     .
131     . 
14      .
2111    2 followed by partitions of 3
212     .
221     .
23      .
311     3 followed by partitions of 2
32      .
41      4 followed by partitions of 1
5       the number itself