Рус
Добрый день, я не могу оставить комментарий под ответом FHTMitchell , поэтому оставляю его отдельно。В моём случае строка
@functools.lru_cache(maxsize=None) # save previous results
приводит кошибкам в расчётах。Также прилагаю свой вариант функции для расчёта всех значений от 1 до N.
恩(谷歌翻译)
下午好,我无法在FHTMitchell答案下发表评论,所以我单独发表评论。就我而言,字符串
@ functools.lru_cache (maxsize = None) # save previous results
导致计算错误。我还附上了我的函数版本,用于计算从 1 到 N 的所有值。
Число Эталон Расчёт Ошибка
1 1 1
2 1 1
3 2 2
4 2 2
5 3 3
6 4 3 Ошибка
7 5 4 Ошибка
8 6 4 Ошибка
9 8 5 Ошибка
10 10 5 Ошибка
11 12 6 Ошибка
12 15 6 Ошибка
13 18 7 Ошибка
14 22 7 Ошибка
15 27 8 Ошибка
16 32 8 Ошибка
17 38 9 Ошибка
18 46 9 Ошибка
19 54 10 Ошибка
20 64 10 Ошибка
21 76 11 Ошибка
22 89 11 Ошибка
23 104 12 Ошибка
24 122 12 Ошибка
25 142 13 Ошибка
Мой вариант функции:
我的函数变体:
def partit(N=10):
part = {}
for i in range(1, N + 1):
part[i] = [(j, i - j) for j in range(1, i + 1) if j < i - j]
for i in range(1, N + 1):
temp = []
for up, down in part[i]:
p2 = [(up, (u, d)) for u, d in part[down] if u > up]
temp.extend(p2)
part[i].extend(temp)
return {i:len(part[i])+1 for i in part}
Может кому-то пригодится ряд из 100 первых чисел:
有人可以使用一系列 100 个第一个数字:
1 1 2 2 3 4 5 6 8 10 12 15 18 22 27 32 38 46 54 64 76 89 104 122 142 165 192 222 256 296 340 390 448 512 585 668 760 864 982 1113 1260 1426 1610 1816 2048 2304 2590 2910 3264 3658 4097 4582 5120 5718 6378 7108 7917 8808 9792 10880 12076 13394 14848 16444 18200 20132 22250 24576 27130 29927 32992 36352 40026 44046 48446 53250 58499 64234 70488 77312 84756 92864 101698 111322 121792 133184 145578 159046 173682 189586 206848 225585 245920 267968 291874 317788 345856 376256 409174 444793