1018 可被 5 整除的二進位制字首

2021-10-14 18:00:27 字數 2372 閱讀 3474

1018. 題目如下在這裡插入**片給定由若干 0 和 1 組成的陣列 a。我們定義 n_i:從 a[0] 到 a[i] 的第 i個子陣列被解釋為乙個二進位制數(從最高有效位到最低有效位)。

返回布林值列表 answer,只有當 n_i 可以被 5 整除時,答案 answer[i] 為 true,否則為 false。

示例 1:

輸入:[0,1,1] 輸出:[true,false,false] 解釋: 輸入數字為 0, 01, 011;也就是十進位制中的 0, 1, 3

。只有第乙個數可以被 5 整除,因此 answer[0] 為真。

示例 2:

輸入:[1,1,1] 輸出:[false,false,false]

示例 3: 輸入:[0,1,1,1,1,1] 輸出:[true,false,false,false,true,false]

在這裡先做乙個數學推導:

m ÷a

=n..

....

bm \div a = n ...... b

m÷a=n.

....

.b那麼2m÷

a=2n

....

....

2b2 m \div a = 2 n ........2 b

2m÷a=2

n...

....

.2b當然這是很不嚴謹的寫法

如果我們只關心餘數,則

c m÷

a=(c

n+⌊c

ba⌋)

....

....

[(cb

)%a]

cm \div a = (cn + \left\lfloor\frac\right\rfloor)........[ (cb)\%a ]

cm÷a=(

cn+⌊

acb​

⌋)..

....

..[(

cb)%

a]( d+

m)÷a

=(n+

⌊d+b

a⌋).

....

..[(

d+b)

%a](d+m) \div a = (n + \left\lfloor\frac\right\rfloor).......[(d+b)\%a]

(d+m)÷

a=(n

+⌊ad

+b​⌋

)...

....

[(d+

b)%a

]與本題的聯絡

示例 3: 輸入:[0,1,1,1,1,1] 輸出:[true,false,false,false,true,false]

二進位制陣列為」0「,能被5整除,餘數為0

原二進位制陣列<<1 (即乘2),後加一,則餘數為 (2*0 + 1)% 5 = 1

同推導公式,餘數為 (2*1+1)%5 = 3

(2*3+1)%5 = 2

(2*2+1)%5 = 0

(2*0+1)%5 = 1

則我們可以定義狀態機機狀態轉移:

class

solution

(object):

defprefixesdivby5

(self, a)

:"""

:type a: list[int]

:rtype: list[bool]

"""ans =

transitionarr =[[

0,2,

4,1,

3],[

1,3,

0,2,

4]]if a[0]

==0:true

)else

:false

) prev = a[0]

for i in

range(1

,len

(a))

: modulus = transitionarr[a[i]

][prev]

if modulus ==0:

true

)else

:false

) prev = modulus

return ans

1018 可被 5 整除的二進位制字首

解題思路 1.可被 5 整除的數個位必然是0或5,所以,我們實際上可以不用關心,各位累加後的結果,我們關心的只是個位 2.原陣列的第i個子陣列組成的十進位制數字的計算方法是 sum 1 a i 其中sum的初始值為0,這樣計算得到的sum實際上超出了int和long型別的範圍,由於我們只關心個位的數...

1018 可被5整除的二進位制字首

給定由若干 0 和 1 組成的陣列 a。我們定義 n i 從 a 0 到 a i 的第 i 個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表 answer,只有當 n i 可以被 5 整除時,答案 answer i 為 true,否則為 false。示例輸入 0,1,1 輸出...

1018 可被 5 整除的二進位制字首

題目描述 給定由若干 0 和 1 組成的陣列 a。我們定義 n i 從 a 0 到 a i 的第 i 個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表 answer,只有當 n i 可以被 5 整除時,答案 answer i 為 true,否則為 false。示例 1 輸入 ...