Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 可被5和6整除的最大数_Math_Numbers_Division - Fatal编程技术网

Math 可被5和6整除的最大数

Math 可被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。换言之,数字

给我一个数字数组,其中元素的范围是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中的较短者 如果lenset1要将其转换为线性时间解决方案,我们所要做的就是将On logn排序调用替换为。

在数学中使用LCM或HCF…您可以说最大数,同时你也在说不必使用所有数字我投票结束这个问题,因为它可能应该在或上提问。数组中的一个数字可以在数字中使用多次吗?@Oriol是的每个数字都有频率计数,它可以使用那么多次。频率计数?你应该在你原来的帖子中提到这一点。或者这就是你所说的数字数组?我假设,以及大多数其他人,可能你指的是{0,1,2,…,9}的子集。但现在听起来数字数组可能有重复。如果你发布你对这个问题的最佳尝试,这将对我们有很大帮助。这正是我要说的。不可被三整除的被分为mod 1和mod 2两类,并从最高到最低配对。这应该很简单。@NPE假设set1[4,4,4]和set2[8,8,8],两个集合的初始长度都是3,那么算法给出的答案是否正确,我猜它是错误的,因为第一个循环需要4和8,然后两者的长度都达到2,然后它将中断,而我们可以从set2中获取所有元素,即[8,8]你不是想把长度检查为三的倍数,而不是等于,然后一次只取三个吗?你应该从1和2中选择两对,而不是三人一组,但是三人一组只选一对。我昨天没想到这件事。