可能重复:
Find multiple of a number that can be written with 1s and 0s
给定数n(2 <= n <= 1000),找到最低的非零倍数,仅用数字0和1写入基数10。示例:2 - &gt; 10,3-&gt; 111,4 - &gt; 100,7 - &gt; 1001,11 - &gt; 11,9-&gt; 111 111 111.
我认为,按照剩余的数字分组,由数字n组成,格式为0 / 1.感谢您的帮助!
{10/3= 3 remaining 1 -> and the finaly is 111 !!!
10/4= 4 ramining 2 -> and the finaly is 100 !!!
10/6= 1 ramainin 4 -> and the finaly is 1110 !!!
I don't understand is the logic}
答案 0 :(得分:0)
问题基本上是说:找到仅包含1和0的 n 的第一个非零倍数。而且我们不是在谈论二元(基数2)或余数或任何花哨的东西。以下是一些示例,格式为:
n => The first multiple of n with only 1s and 0s is x (n * y = x)
--------------------------------------------------------------------------
2 => (2 x 5 = 10)
3 => (3 x 37 = 111)
4 => (4 x 25 = 100)
7 => (7 x 143 = 1001)
11 => (11 x 1 = 11)
9 => (9 x 12,345,679 = 111,111,111)
您需要找出一种算法才能使其正常运行!你可以使用蛮力:
for each n between 2 and 1000
y = 1
x = 0
do
x = n * y++
while (x is not 0 and string(x) is not all 0s and 1s)
print n => x
next n
我在C#中实现了它来测试它,它给了我以下输出 n 在2到10之间:
2 => 10
3 => 111
4 => 100
5 => 10
6 => 1110
7 => 1001
8 => 1000
9 => 111111111
10 => 10
可能会有更快的实施,但这可以让你知道从哪里开始。
答案 1 :(得分:0)
如果您正在寻求帮助来解释(家庭作业)问题,我认为这意味着:“对于给定的数字,找出仅包含数字1或0的最低倍数”
因此,例如,如果数字是2:
Multiples of 2 = {2, 4, 6, 8, 10, 12, 14, .... }
|
|
this is your answer!
执行此操作的非暴力方法是迭代仅包含0和1的数字,然后确定该数字是否是相关数字的倍数。这种方法比迭代n
的倍数并确定它是否仅包含0
和1
要高效得多。
获取仅包含0
和1
的数字列表的简单方法是迭代整数,并为每个值,将其二进制表示解释为十进制数。
这是一个可以帮助您入门的在线演示:http://jsfiddle.net/6j5De/4/
由于它可能是家庭作业,我会留给你把它翻译成你的主语。