簡(jiǎn)單的題目嚎货,繞了大圈子剪芍,希望下次長(zhǎng)記性涕滋。
# 很簡(jiǎn)單的一道題
"""
執(zhí)行結(jié)果:
通過(guò)顯示詳情執(zhí)行用時(shí):1304 ms, 在所有 Python3 提交中擊敗了5.15%的用戶
內(nèi)存消耗:15.7 MB, 在所有 Python3 提交中擊敗了41.14%的用戶
效果貌似很差勁啊位喂。
這道題主要的時(shí)間消耗在于惩嘉,如果數(shù)組A比較長(zhǎng)的時(shí)候罢洲, 那么A[:n]所表示整數(shù)會(huì)特別大,所以需要取模文黎。
即惹苗, 如果 10000005 % 5 == 0, 那么就讓 10000005 = 0
# 這里我也是繞了一個(gè)大圈子啊, 去百度百科查看取模運(yùn)算的詳情耸峭。目的也是在于深刻地理解問(wèn)題桩蓉。
取模運(yùn)算
雖然很多數(shù)論教材上對(duì)模運(yùn)算都有一定的介紹,但多數(shù)都是以純理論為主劳闹,對(duì)于模運(yùn)算在程序設(shè)計(jì)中的應(yīng)用涉及不多院究。
python -7 % 4 = 1
取模定律 (a * b) % p = (a % p * b % p) % p
取模定律有很多條, see:
https://baike.baidu.com/item/%E5%8F%96%E6%A8%A1%E8%BF%90%E7%AE%97/10739384?fr=aladdin
"""
import random
from my_timer import timer
# g = []
# for m in range(10000):
# g.append(random.choice([0,1]))
# print(g)
@timer
def solution():
ret = []
temp = "0"
for x in A:
temp += str(x)
if int(temp, base=2) % 5 == 0:
ret.append(True)
temp = "0"
else:
ret.append(False)
print(ret)
# before 0.0690622329711914 seconds on: solution
# after 0.00800776481628418 seconds on: solution
if __name__ == '__main__':
solution()