7
查找无和分区
执行摘要 给定input k,找到整数分区,1将其划分n为无k和子集,以n在10分钟内找到最大的子集。 背景:舒尔数 一组A是免费的总和,如果其自我总结A + A = { x + y | x, y in A}有没有相同的元素吧。 对于每个正整数,k都有一个最大的整数S(k),以便{1, 2, ..., S(k)}可以将集合划分为无k和子集。该编号称为第k 个 Schur编号(OEIS A045652)。 例如,S(2) = 4。我们可以将分区{1, 2, 3, 4}为{1, 4}, {2, 3},这是唯一的分区,分为两个无和子集,但是现在不能在这5两个部分中添加。 挑战 编写一个执行以下操作的确定性程序: 以正整数k作为输入 将当前的Unix时间戳写入stdout 按照当前的Unix时间戳,将每个序列的划分为1to 的一系列划分n为无k和子集,以进行递增n。 获胜者将是在n输入后10分钟内在我的计算机上打印最大分区的程序5。纽带将以最快的时间断开,以找到最大的n,平均3次运行的分区:这就是为什么输出应包含时间戳的原因。 重要细节: 我有Ubuntu Precise,因此如果不支持您的语言,我将无法评分。 我有一个Intel Core2 Quad CPU,所以如果您要使用多线程,那么使用4个以上的线程是没有意义的。 如果您希望我使用任何特定的编译器标志或实现,请在您的答案中清楚记录。 您不应对代码进行特殊处理以处理输入5。 您无需输出发现的所有改进。例如,对于输入,2您只能输出的分区n …