Укажите все номера годов текущего десятилетия (с 2...
Créé le : 5 novembre 2025
Répondu en utilisant GPT-5 Thinking par Chat01
Créé le : 5 novembre 2025
Répondu en utilisant GPT-5 Thinking par Chat01
Укажите все номера годов текущего десятилетия (с 2021 по 2030), которые можно представить
суммой одно-, двух-, трёх- и четырёхзначного чисел так, чтобы каждая цифра была использована один раз
pythonimport itertools digits = '0123456789' def num_from_digits(digs): return int('''.join(digs))
pythonimport itertools digits = '0123456789' def num_from_digits(digs): return int(''.join(digs)) targets = list(range(2021, 2031)) solutions = {t: [] for t in targets} for d1 in digits: rem1 = set(digits) - {d1} n1 = int(d1) for d2pair in itertools.permutations(rem1, 2): if d2pair[0]=='0': continue rem2 = rem1 - set(d2pair) n2 = num_from_digits(d2pair) for d3trip in itertools.permutations(rem2, 3): if d3trip[0]=='0': continue rem3 = rem2 - set(d3trip) n3 = num_from_digits(d3trip) # remaining 4 digits: there are 4 chosen? Wait rem3 ({2021: 0, 2022: 0, 2023: 0, 2024: 0, 2025: 2208, 2026: 0, 2027: 0, 2028: 0, 2029: 0, 2030: 0}, 2208)
python# get one example example = None for sol in solutions[2025]: example = sol break example (0, 58, 274, 1693)
pythonsolutions_nonzero_1digit = {t: [] for t in targets} for d1 in '123456789': # exclude 0 rem1 = set(digits) - {d1} n1 = int(d1) for d2pair in itertools.permutations(rem1, 2): if d2pair[0]=='0': continue rem2 = rem1 - set(d2pair) n2 = num_from_digits(d2pair) for d3trip in itertools.permutations(rem2, 3): if d3trip[0]=='0': continue rem3 = rem2 - set(d3trip) n3 = num_from_digits(d3trip) for d4perm in itertools.permutations(rem3, 4): if d4perm[0]=='0': continue n4 = num_from_digits(d4perm) s = n1 + n2 + n3 + n4 if s in solutions_nonzero_1digit: solutions_nonzero_1digit[s].append((n1,n2,n3,n4)) {k:len(v) for k,v in solutions_nonzero_1digit.items()} {2021: 0, 2022: 0, 2023: 0, 2024: 0, 2025: 1920, 2026: 0, 2027: 0, 2028: 0, 2029: 0, 2030: 0}
python# find example with one-digit != 0 ex2 = None for sol in solutions_nonzero_1digit[2025]: ex2 = sol break ex2 (2, 54, 876, 1093)
Только 2025.
Почему: по модулю 9 каждое число сравнимо с суммой своих цифр, а все десять цифр 0–9 в сумме дают 45 ≡ 0 (mod 9). Значит искомый год должен делиться на 9. В диапазоне 2021–2030 это выполняется только для 2025.
Конструкция (пример):