多个格式化为0/1

时间:2011-10-25 11:58:28

标签: numbers

  

可能重复:
  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}

2 个答案:

答案 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的倍数并确定它是否仅包含01要高效得多。

获取仅包含01的数字列表的简单方法是迭代整数,并为每个值,将其二进制表示解释为十进制数。

这是一个可以帮助您入门的在线演示:http://jsfiddle.net/6j5De/4/

由于它可能是家庭作业,我会留给你把它翻译成你的主语。