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

Задание 17 задача 231. Неверный ответ и решение на сайте.

Izotik457: На сайте дано решение, но оно не учитывает особенность языка Python(нахождение остатка у отрицательного числа). В задаче спрашивается окончание числа на цифру 4. Сразу же на ум приходит найди остаток от деления на 10, и при делении на положительное число это работает, но при делении на отрицательное Python не выдаст последнюю цифру, он выдаст (последняя цифра - 10) - это особенность языка. В решениях это не учитывается и ответ, следовательно, неверный. Чтобы избежать эту ошибку, я предлагаю использовать модуль числа, и от модуля искать остаток. Вот мое решение: [pre2] with open("17-1.txt", "r") as f: s = [int(r.strip()) for r in f] sr = sum(s)/len(s) k = 0 m = -10**10 for i in range(len(s)-2): if (s < sr) or (s[i+1] < sr) or (s[i+2] < sr): d = 0 if abs(s) % 10 == 4: d +=1 if abs(s[i+1]) % 10 == 4: d +=1 if abs(s[i+2]) % 10 == 4: d +=1 if d >= 2: k += 1 sm = s + s[i+1] + s[i+2] if sm > m: m = sm print(k, m) [/pre2]

Ответов - 1

Поляков: Спасибо, вы правы. Ответ и решение исправлены.



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