Форум » Обработка целых чисел » Задание 17, задача 204. » Ответить

Задание 17, задача 204.

Лаптев Андрей: Добрый день, возник вопрос к данному заданию, не совпадает ответ, подскажите пожалуйста в чем может быть ошибка в моем алгоритме и как может вообще получиться сумма 23427, если подходящая тройка чисел это два отрицательных числа и одно положительное, согласно условия числа могут принимать значения от -10000 до 10000. Или мной было не верно воспринято задание. [pre2] {204) (П. Финкель) В файле 17-204.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным числом, заканчивающимся на 9. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек. ОТВЕТ: 206 23427} var a:text; s1,s2,s3,s,c:integer; begin s:=-30000; c:=0; assign (a,'D:\17data(1)\17-204.txt'); reset (a); read (a,s1); read (a,s2); while not EOF(a) do begin read (a,s3); if (s2>0) and ((s2 mod 10) = 9)and (s1<0) and (s3<0) then begin c:=c+1; if s<(s1+s2+s3) then s:=s1+s2+s3; end; s1:=s2; s2:=s3; end; close (a); writeln (c,' ', s); end. [/pre2]

Ответов - 16, стр: 1 2 All

zachto: Лаптев Андрей пишет: Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным числом, заканчивающимся на 9. Первое и третье числа могут быть равны нулю, а у вас s1 < 0 and s3 < 0.

Лаптев Андрей: zachto пишет: Первое и третье числа могут быть равны нулю, а у вас s1 < 0 and s3 < 0. согласен, но на ответ в данной задачи это не влияет.

zachto: У вас получается 113 и 6241?


Лаптев Андрей: нет, 63 и 6241

zachto: Я, в общем, понял смысл условия. Напишу по-питоновски, надеюсь, что вы поймете: [pre2]def func(x): if x > 0 and x % 10 == 9: return True return False[/pre2] и [pre2]if func(a2) and not func(a1) and not func(a3): cnt += 1 maxk = max(maxk, a1 + a2 + a3)[/pre2] В общем только для второго числа должно выполняться, что последняя цифра 9 и оно больше нуля. Другие числа, если и больше нуля, то должны иметь не равную 9 последнюю цифру.

Лаптев Андрей: Спасибо, мной не верно было воспринято условие задачи. Ответы получил, вот код: [pre2] var a:text; s1,s2,s3,s,c:integer; begin s:=-30000; c:=0; assign (a,'D:\17data(1)\17-204.txt'); reset (a); read (a,s1); read (a,s2); while not EOF(a) do begin read (a,s3); if (s2>0) and ((s2 mod 10) = 9)and not ((s1>0) and ((s1 mod 10) = 9)) and not ((s3>0) and ((s3 mod 10) = 9)) then begin c:=c+1; if s<(s1+s2+s3) then s:=s1+s2+s3; end; s1:=s2; s2:=s3; end; close (a); writeln (c,' ', s); end. [/pre2]

Елена_В: Как решить это в экселе?

Поляков: Елена_В пишет: Как решить это в экселе? Наверняка решить можно. Строить вспомогательные столбцы, отражающие свойства троек соседних чисел. Но проще программу написать.

Елена_В: Немного уточню мысль, есть ли возможность решить любое 17 задание в эксель? или без программирования не обойтись? Здесь https://kpolyakov.spb.ru/download/ege2022kp.7z - ege17.doc подобного задания не нашла, может где еще? помогите пожалуйста.

аленка: f = open('17-204.txt') a = [int(x) for x in f] k = [] for i in range(len(a) - 2): if a[i+1] > 0 and abs(a[i+1]) % 10 == 9: if (a[i] < 0 or abs(a[i]) % 10 != 9) and (a[i+2] < 0 or abs(a[i+2]) % 10 != 9): k.append(sum(a[i:i+3])) print(len(k), max(k))

аленка: f = open('17-204.txt') a = [int(x) for x in f] k = [] for i in range(len(a) - 2): if a[i+1] > 0 and abs(a[i+1]) % 10 == 9: if (a[i] < 0 or abs(a[i]) % 10 != 9) and (a[i+2] < 0 or abs(a[i+2]) % 10 != 9): k.append(sum(a[i:i+3])) print(len(k), max(k))

аленка: f = open('17-204.txt') a = [int(x) for x in f] k = [] for i in range(len(a) - 2): if a[i+1] > 0 and abs(a[i+1]) % 10 == 9: if (a[i] < 0 or abs(a[i]) % 10 != 9) and (a[i+2] < 0 or abs(a[i+2]) % 10 != 9): k.append(sum(a[i:i+3])) print(len(k), max(k))

аленка: f = open('17-204.txt') a = [int(x) for x in f] k = [] for i in range(len(a) - 2): if a[i+1] > 0 and abs(a[i+1]) % 10 == 9: if (a[i] < 0 or abs(a[i]) % 10 != 9) and (a[i+2] < 0 or abs(a[i+2]) % 10 != 9): k.append(sum(a[i:i+3])) print(len(k), max(k))

аленка: f = open('17-204.txt') a = [int(x) for x in f] k = [] for i in range(len(a) - 2): if a[i+1] > 0 and abs(a[i+1]) % 10 == 9: if (a[i] < 0 or abs(a[i]) % 10 != 9) and (a[i+2] < 0 or abs(a[i+2]) % 10 != 9): k.append(sum(a[i:i+3])) print(len(k), max(k))

Аня951: [pre2] with open('17-204.txt') as f: s = [int(x) for x in f] otv = [] poloh9 = [] for i in range(len(s)): if s[ i] > 0 and s[ i] % 10 == 9: poloh9.append(s[ i]) for x in range(len(s) - 2): if s[x] not in poloh9 and s[x + 1] in poloh9 and s[x + 2] not in poloh9: otv.append(s[x] + s[x + 1] + s[x + 2]) print(len(otv), max(otv))[/pre2]



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