
获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
#刷题交流# 跨年夜刷题打卡。生物学家小 R 正在研究一种特殊的兔子品种的繁殖模式。这种兔子的繁殖遵循以下规律:
每对成年兔子每个月会生育一对新的小兔子(一雌一雄)。
新生的小兔子需要一个月成长,到第二个月才能开始繁殖。
兔子永远不会死亡。
def solution(A:int)->int:
if A == 1:
return 1
elif A == 2:
return 2
prev2 = 1
prev1 = 2
for i in range(3, A + 1):
current = prev1 + prev2
prev2 = prev1
prev1 = current
return prev1
if __name__ == '__main__':
print(solution(A = 5) == 8)
print(solution(A = 1) == 1)
print(solution(A = 15) == 987)
print(solution(A = 50) == 20365011074)
每对成年兔子每个月会生育一对新的小兔子(一雌一雄)。
新生的小兔子需要一个月成长,到第二个月才能开始繁殖。
兔子永远不会死亡。
def solution(A:int)->int:
if A == 1:
return 1
elif A == 2:
return 2
prev2 = 1
prev1 = 2
for i in range(3, A + 1):
current = prev1 + prev2
prev2 = prev1
prev1 = current
return prev1
if __name__ == '__main__':
print(solution(A = 5) == 8)
print(solution(A = 1) == 1)
print(solution(A = 15) == 987)
print(solution(A = 50) == 20365011074)
展开
评论
点赞
#刷题交流# 刷题打卡,周一我又来啦!def solution(n: int, k: int, p: int) -> int:
assert n < 10
def gen_line(pre):
ret = [0] * 10
sum_val = 0
for i in range(1, 10):
sum_val += pre[i]
ret[i] = sum_val
return ret
def gen_table():
ret = []
line = [0] * 10
for i in range(1, 10):
line[i] = 1
ret.append(line)
for _ in range(1, 101):
new_line = gen_line(ret[-1])
ret.append(new_line)
return ret
def find(num, time, pos, table):
if time == 0:
return num
for i in range(1, num + 1):
if pos <= table[time - 1][i]:
return find(i, time - 1, pos, table)
pos -= table[time - 1][i]
return -1
table = gen_table()
return find(n, k, p, table)
assert n < 10
def gen_line(pre):
ret = [0] * 10
sum_val = 0
for i in range(1, 10):
sum_val += pre[i]
ret[i] = sum_val
return ret
def gen_table():
ret = []
line = [0] * 10
for i in range(1, 10):
line[i] = 1
ret.append(line)
for _ in range(1, 101):
new_line = gen_line(ret[-1])
ret.append(new_line)
return ret
def find(num, time, pos, table):
if time == 0:
return num
for i in range(1, num + 1):
if pos <= table[time - 1][i]:
return find(i, time - 1, pos, table)
pos -= table[time - 1][i]
return -1
table = gen_table()
return find(n, k, p, table)
展开
评论
点赞
#刷题交流# 刷题打卡,第64题:def solution(number: int, heroes: list) -> int:
# 小U的英雄能力值固定为 1 到 n
u_heroes = list(range(1, number + 1))
# 对小F的英雄能力值进行排序
heroes.sort()
# 初始化指针和胜利计数
u_index = 0
f_index = 0
wins = 0
# 使用双指针遍历
while f_index < number and u_index < number:
if heroes[f_index] > u_heroes[u_index]:
# 小F的英雄胜利
wins += 1
u_index += 1 # 小U的指针前进
# 小F的指针总是前进
f_index += 1
return wins
if __name__ == '__main__':
print(solution(number = 7, heroes = [10, 1, 1, 1, 5, 5, 3]) == 4)
print(solution(number = 5, heroes = [1, 1, 1, 1, 1]) == 0)
print(solution(number = 6, heroes = [9, 4, 7, 3, 2, 6]) == 6)
# 小U的英雄能力值固定为 1 到 n
u_heroes = list(range(1, number + 1))
# 对小F的英雄能力值进行排序
heroes.sort()
# 初始化指针和胜利计数
u_index = 0
f_index = 0
wins = 0
# 使用双指针遍历
while f_index < number and u_index < number:
if heroes[f_index] > u_heroes[u_index]:
# 小F的英雄胜利
wins += 1
u_index += 1 # 小U的指针前进
# 小F的指针总是前进
f_index += 1
return wins
if __name__ == '__main__':
print(solution(number = 7, heroes = [10, 1, 1, 1, 5, 5, 3]) == 4)
print(solution(number = 5, heroes = [1, 1, 1, 1, 1]) == 0)
print(solution(number = 6, heroes = [9, 4, 7, 3, 2, 6]) == 6)
展开
评论
1
#刷题交流# 刷题打卡:小M需要一个函数,用于将RGB颜色值转换为相应的十六进制整数值。RGB色值以字符串的形式给出,如"rgb(192, 192, 192)",需要转换为对应的整数值。
import re
def solution(rgb: str) -> int:
mc = re.findall(r'\d+', rgb)
if not mc or len(mc) != 3:
raise ValueError('Invalid rgb')
mc = list(map(int, mc))
if any(d < 0 or d > 255 for d in mc):
raise ValueError('Invalid rgb')
# Method 1: Using bitwise operations
result1 = (mc[0] << 16) + (mc[1] << 8) + mc[2]
# Method 2: Using formatted string and parsing to int
result2 = int(''.join(f'{x:02x}' for x in mc), 16)
if result1 == result2:
return result1
raise ValueError('showcase error.') # Raise error if reference implementation has issues
import re
def solution(rgb: str) -> int:
mc = re.findall(r'\d+', rgb)
if not mc or len(mc) != 3:
raise ValueError('Invalid rgb')
mc = list(map(int, mc))
if any(d < 0 or d > 255 for d in mc):
raise ValueError('Invalid rgb')
# Method 1: Using bitwise operations
result1 = (mc[0] << 16) + (mc[1] << 8) + mc[2]
# Method 2: Using formatted string and parsing to int
result2 = int(''.join(f'{x:02x}' for x in mc), 16)
if result1 == result2:
return result1
raise ValueError('showcase error.') # Raise error if reference implementation has issues
展开
1
1
#刷题交流# 12月26日刷题打卡啦!小M获得了一个任务,需要将数字翻译成字符串。翻译规则是:0对应"a",1对应"b",依此类推直到25对应"z"。一个数字可能有多种翻译方法。小M需要一个程序来计算一个数字有多少种不同的翻译方法。
def solution(num: int) -> int:
src = str(num)
p, q, r = 0, 0, 1
for i in range(len(src)):
p, q, r = q, r, 0
r += q
if i == 0:
continue
pre = src[i - 1:i + 1]
if "10" <= pre <= "25":
r += p
return r
if __name__ == '__main__':
print(solution(num = 12258) == 5)
print(solution(num = 1400112) == 6)
print(solution(num = 2110101) == 10)
print(solution(num = 25) == 2)
print(solution(num = 1023) == 4)
def solution(num: int) -> int:
src = str(num)
p, q, r = 0, 0, 1
for i in range(len(src)):
p, q, r = q, r, 0
r += q
if i == 0:
continue
pre = src[i - 1:i + 1]
if "10" <= pre <= "25":
r += p
return r
if __name__ == '__main__':
print(solution(num = 12258) == 5)
print(solution(num = 1400112) == 6)
print(solution(num = 2110101) == 10)
print(solution(num = 25) == 2)
print(solution(num = 1023) == 4)
展开
评论
点赞
#刷题交流# 打卡打卡:小C面对一个由整数构成的数组,他考虑通过一次操作提升数组的潜力。这个操作允许他选择数组中的任一子数组并将其翻转,目的是在翻转后的数组中找到具有最大和的子数组。小C对这个可能性很感兴趣,并希望知道翻转后的数组中可能得到的最大子数组和是多少。
def solution(N: int, data_array: list) -> int:
assert N == len(data_array)
ldp = [0] * N
rdp = [0] * N
s = 0
for i in range(N):
s += data_array[i]
if s < 0:
s = 0
ldp[i] = max(ldp[i - 1], s) if i != 0 else max(0, data_array[i])
for i in range(N - 1, -1, -1):
rdp[i] = max(data_array[i], rdp[i + 1] + data_array[i]) if i != N - 1 else data_array[i]
ans = float('-inf')
for i in range(N - 1):
ans = max(ans, ldp[i] + rdp[i + 1])
return max(ans, max(data_array))
def solution(N: int, data_array: list) -> int:
assert N == len(data_array)
ldp = [0] * N
rdp = [0] * N
s = 0
for i in range(N):
s += data_array[i]
if s < 0:
s = 0
ldp[i] = max(ldp[i - 1], s) if i != 0 else max(0, data_array[i])
for i in range(N - 1, -1, -1):
rdp[i] = max(data_array[i], rdp[i + 1] + data_array[i]) if i != N - 1 else data_array[i]
ans = float('-inf')
for i in range(N - 1):
ans = max(ans, ldp[i] + rdp[i + 1])
return max(ans, max(data_array))
展开
评论
点赞