给定n,找到最小的m,使n除以m,m只包含4&s;后跟0' s

时间:2017-11-09 15:30:07

标签: algorithm

我最近在测试期间遇到了这个问题。给定数n,找到最小的数m,使得n除以m,m是仅由数字4&s组成的数字,后跟数字0' s。例如,m可以是44400,40000,444440但不是404,4404等。

我的方法是找到所有这些数字,直到INT_MAX,将它们存储在一个向量中,然后如果n在迭代向量时n除[v],则分别测试每个情况。

显然,有一种更好的方法可以解决它,因为我的方法只是部分被接受了。任何建议将不胜感激。

编辑:n可以大到1000。

1 个答案:

答案 0 :(得分:3)

您可以考虑所有数字4, 44, 444, 4444, ...等,并检查它们是否可以被n整除。如果你考虑n+1,那么你会发现至少2个具有相同模数余数n的{​​{1}}。你可以减去它们(最小的)然后这就是你的答案。

假设n717

Then at first you consider 4 and  remainder is 4.
Now you consider 44 and remainder is same as (4*10+4).
Now you consider 444 and remainder is (44*10+4) or 444.
Now 4444 and remainder = ((444*10)%717+4)%717= 138+4= 142.
Now 44444 and remainder = ((142*10)%717+4)%717= 707.