Math 可被5和6整除的最大数
给我一个数字数组,其中元素的范围是0-9,我需要使用数字构造最大的数,这样形成的数可以被5和6整除。如何使用更好的算法有效地解决这个问题。它不需要使用提供的所有数字,但形成的数字应该是最大的,并且可以被5和6整除。tl;从本质上讲,这个问题可以归结为寻找其和可以被三整除的最大数字子集的问题。这可以在数字数量呈线性的时间内完成 这可以通过使用和解决 6的素因式分解是2*3。假设你也需要被5整除,这意味着你要形成一个可以被2,3和5整除的数字 我们可以像这样重新组合三个除数:2*5和3。换言之,数字必须能被10和3整除: 只有以零结尾的数字才能被10整除。这意味着,从你的数字数组中,你需要留出一个零来满足这个可分性要求 只有数字加起来等于3的数字才能被3整除。这意味着,从数组中的剩余数字中,通过选择较大的数字而不是较小的数字,可以寻找其总和可被三个断开长度关系整除的最长子集 一旦你有了数字,你就可以通过把数字从大到小排序,最后是零来形成数字 因此,我们将问题简化为寻找其和可被3整除的子集。首先,我们可以注意到,所有本身可被三整除的数字,即零、3、6和9,都可以而且应该被选择 至于剩下的数字,2s、4s、5s、7s和8s,你要选择可以被三整除的组,例如,1+2、2+5+8等。如果我们将等于1模3的数字表示为① 和等于2 mod 3的数字作为②, 组建此类团体的唯一可能性是①+①+①, ①+② 和②+②+②. 以下Python解决方案将所有这些想法结合在一起: def get_n_mod_3数字,n: 如果d%3==n,则返回d的数字 定义数字: 选择所有0模式3 已选择=获取\n\u模块\u 3数字,0 如果未选择或已选择[0]!=0: 不能被2和5整除 一无所获 选择所有1模3和2模3 set1=获取模块3数字,1 set2=获取模块3数字,2 尽管如此: 为了简化接下来的操作,请将较长的集合存储在set1中 set2中的较短者 如果lenset1Math 可被5和6整除的最大数,math,numbers,division,Math,Numbers,Division,给我一个数字数组,其中元素的范围是0-9,我需要使用数字构造最大的数,这样形成的数可以被5和6整除。如何使用更好的算法有效地解决这个问题。它不需要使用提供的所有数字,但形成的数字应该是最大的,并且可以被5和6整除。tl;从本质上讲,这个问题可以归结为寻找其和可以被三整除的最大数字子集的问题。这可以在数字数量呈线性的时间内完成 这可以通过使用和解决 6的素因式分解是2*3。假设你也需要被5整除,这意味着你要形成一个可以被2,3和5整除的数字 我们可以像这样重新组合三个除数:2*5和3。换言之,数字