gpt4 book ai didi

python - 为什么我总是少一分

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:01 25 4
gpt4 key购买 nike

我正在解决 problem在 Codeforce 中,这是我之前提交的

#!/usr/local/bin/python

limit = 10**18
string = raw_input()
year1, year2 = string.split()
year1 = int(year1)
year2 = int(year2)
x = 1
count = 0
a = []
while True:
k = 2**x - 1

if k > limit:
break
else:
for i in xrange(len(bin(k)[2:])):
if year1 <= k - (1 << i) <= year2 and len(bin(k - (1 << i))[2:].split('0')) == 2:
count += 1
x += 1
print count

它适用于所有给定值,但它在 11000000000000000000 范围内给出的计数值少了一个。很难调试,因此我在最后一个 print 之前放了一段破解代码,就像这样

if year2 - year1 + 1 == limit:
count += 1

它适用于该值,但对于另一个范围,1935829385028502935 再次给出一个较小的值。

难怪 logic-less hack 没有起作用,但我想知道为什么它以前少了一个计数值?

最佳答案

你需要增加limit另一个数量级:

limit = 10**19

否则你会错过 864691128455135231 , 从 1152921504606846975 - (1 << 58) 获得.

(观察 1152921504606846975 > 10**18 。)

关于python - 为什么我总是少一分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com