Форум » Обработка целых чисел » № 4701 не сходится ответ » Ответить

№ 4701 не сходится ответ

Lame: Правильный ответ: 14 11350 Мое решение: f = open('17-243.txt') a = [int(i) for i in f] c = 0 mxx = 0 mn = 63262332 for i in range(len(a)): if a[i] % 107 == 0 and a[i] > mxx: mxx = a[i] for i in range(len(a)-1): if (a[i] > mxx or a[i+1] > mxx) and ('36' in str(a[i]) or ('36' in str(a[i+1]))): c += 1 if a[i] + a[i+1] < mn: mn = a[i] + a[i+1] print(c, mn) Мой ответ: 3 11350 Подскажите где ошибка

Ответов - 1

Ж: Ошибка вот в чем: и в семеричной записи хотя бы одного элемента из двух содержится сочетание цифр 36 Поправленный код: [pre2] f = open('d:\\17-243.txt') sem=lambda n: sem(n//7)+'0123456'[n%7] if n>0 else '' # переводит любое число в семеричную систему счисления a = [int(i) for i in f] c = 0 mxx = 0 mn = 63262332 for i in range(len(a)): if a % 107 == 0 and a > mxx: mxx = a for i in range(len(a)-1): if (a > mxx or a[i+1] > mxx) and ('36' in sem(a) or ('36' in sem(a[i+1]))): c += 1 if a + a[i+1] < mn: mn = a + a[i+1] print(c, mn) [/pre2] А вот более компактная версия кода: [pre2] sem=lambda n: sem(n//7)+'0123456'[n%7] if n>0 else '' s=[int(c) for c in open('d:\\17-243.txt')] maxi=max(c for c in s if c%107==0) par=[sum(s[i:i+2]) for i in range(len(s)-1) if (s >maxi or s[i+1]>maxi) and ('36' in sem(s) or '36' in sem(s[i+1]) ) ] print(len(par), min(par)) [/pre2]



полная версия страницы