我正在解决这个问题,即我们给出了数字 N ,它可以非常大,最多可以有100000个数字。
现在我想知道找到这些数字的最有效方法是什么,我认为在大数字中我需要删除最多3位数才能使该数字被3整除。
我知道如果数字的总和可以被3整除,那么数字可以被3整除,但我想不出我们怎么能用它。
我的想法是对字符串施加暴力并检查我们是否删除该数字是可被3整除的数字,但我的解决方案在复杂的例子中失败了。请给我一些提示。
提前致谢。
答案 0 :(得分:4)
如果模3的数字之和等于1,则要删除单个1,4或7.如果数字之和为2,则要删除单个2,5或8
如果无法完成,则必须删除两位数字。
为了避免两次扫描列表,您可以记住最多两个数字的索引与1一致,最多两个数字的索引与2一致,因此当您计算最终模数时,您知道要查找的位置。 / p>
答案 1 :(得分:0)
数字3具有一些与您可以利用的基数为10的系统相关的特殊属性。
10比1多9,9可以被3整除,所以“10”中的“1”作为加1到9的余数。结果,如果是所有数字的总和数字可以被3整除,那么这个数字也可以被3整除。
因此,如果您首先确定添加所有数字后modulo是什么,那么您将知道该数字是否可被0整除(即,结果为模零)。如果没有,那么你可以一次减去一个数字,重新计算结果数的模数,直到最终得到模数为零。
答案 2 :(得分:0)
对于模3的数字之和等于1
Deleting 1 digit Option: 1,4,7
Deleting 2 digit Option: 2 5,2 8,5 8,2 2,5 5,8 8
对于模3的数字之和等于2
Deleting 1 digit Option: 2,5,8
Deleting 2 digit Option: 1 4,1 7,4 7,1 1,4 4,7 7
答案 3 :(得分:-1)
你应该检查是什么使得数字可以被3整除。如果你找到它,你应该把问题分成更小的问题