Форум » Обработка целых чисел » Задачи 17.202 и 17.203 » Ответить

Задачи 17.202 и 17.203

Поляков: Павел С. пишет: [quote]"В файле 17-202.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным трёхзначным числом, заканчивающимся на 5. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек." Словосочетание "только второе" явно указывает на то, что в массиве М, состоящем из трех числе чисел ТОЛЬКО ВТОРОЕ число должно быть трехзначным, быть > 0 и заканчиваться на 5. Из чего следует, что первое и третье НЕ должны быть таковыми. Другими словами "последовательности называется уникальной", только при соблюдении следующей логики: М[1] попадает под Условие И М[0] НЕ (попадает под Условие ) И М[2] НЕ (попадает под Условие) , где М - это массив из трех чисел; Условие - "должно быть положительным трёхзначным числом, заканчивающимся на 5"; Однако результат решения задачи совпадает с правильным, только при логике: М[1] попадает под Условие, М[0] И М[2] - ЛЮБОЕ ЧИСЛО;[/quote]Вот решение, у которого ответ совпадает с приведенным: [pre2] data = [int(x) for x in open('17-202.txt')] def cond(x): return 100 <= x < 1000 and x % 10 == 5 ma = 0 count = 0 for i in range(2,len(data)): if (not cond(data[i-2])) and cond(data[i-1]) and \ (not cond(data[ i])): count += 1 ma = max(ma, sum(data[i-2:i+1])) print( count, ma )[/pre2][quote]задача 203 демонстрирует ту же логическую ошибку[/quote]Вот решение задачи 203:[pre2]data = [int(x) for x in open('17-202.txt')] def cond(x): return 100 <= x < 1000 and x % 100 == 12 ma = 0 count = 0 for i in range(2,len(data)): if (not cond(data[i-2])) and cond(data[i-1]) and \ (not cond(data[ i])): count += 1 ma = max(ma, sum(data[i-2:i+1])) print( count, ma )[/pre2]

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

gk.aledar: Информатика - это точная наука. Это не история. Тут не может быть двух мнений. trye - это всегда истина, а false - всегда ложь. Спрошу прямо: Вам не кажется, что это задание сформулировано так ,что на него сложно дать однозначное правильное решение?

Поляков: gk.aledar пишет: Вам не кажется, что это задание сформулировано так ,что на него сложно дать однозначное правильное решение? Нет, не кажется.

cabanov.alexey: Давайте ещё раз. только второе из них является положительным трёхзначным числом, заканчивающимся на 5 Даю вам 3 числа 1005 115 127 ВОПРОС - почему по вашему мнению эта тройка НЕ ПОДХОДИТ под это условие?


Елена0787: (№ 4419) (П. Финкель) В файле 17-199.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным двузначным нечётным числом. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек. count=0 for i in range(2,len(s)): if not(int(s[i-2])%2==1 and 1000>int(s[i-2])>=100) and not(int(s)%2==1 and 1000>int(s)>=100) and (int(s[i-1])%2==1 and 1000>int(s[i-1])>=100 ): count+=1 print(count) выводит количество: 94 что не так? может в генераторе ответ неверный?

polyakovss: В условии задачи: ... если только второе из них является положительным двузначным нечётным числом.

smth000: подскажите, почему здесь: for i in range(2,len(data)) именно от двух?

Поляков: smth000 пишет: почему здесь: for i in range(2,len(data)) именно от двух? Потому что в теле цикла есть обращение к s[i-2].



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