看板 Prob_Solve 關於我們 聯絡資訊
※ 引述《neverfly (neverfly)》之銘言: : 我想要建一個automata,可以輸入二進位的值, : 如果該值能被5整除就接受。 : 但是我想了很久,實在想不出來二進位下,能被5整除的數有什麼特性。 : 列了前幾個出來 : 101 1010 1111 10100 11001 11110 100011 101000 : 101101 110010 110111 111100 1000001 1000110 1001011 1010000 : 1010101 1011010 1011111 1100100 …… : 只發現了有每八個,末三碼會重覆這個特性, : 不過似乎還是不能直接檢查出來一串二進位的值是否被5整除。 : 請問有人能解決這個問題嗎? 1.把數字右移兩位 - 原數字後面兩位.... (如果這個結果是5的倍數..則代表原數字是五的倍數.) 2.當然你為了要檢查(1)的結果是不是5的倍數...還要再回(1)再做一次檢查 (直到後面的兩位數字大於被右兩位的數字值).. 例如:10100 => 101-00=101=>1-01=0=>5的倍數 1011111=>10111-11=10100=>101-00=101=>1-01=0=>5的倍數 弄一個不是的來看看好了 1000111=>10001-11=1110=>11-10=1=>0-1 < 0 =>所以不是5的倍數 ps:剛才臨時想到的....大家看看有沒有問題.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.105.209
utility:Pash77的方法最好... 10/04 13:47