Надо занимать единицу из старшего разряда, при этом помнить, что в случаях, когда занимается единица старшего разряда, она дает две единицы младшего разряда (одну из которых держим в уме).
Если занимается единица через несколько разрядов, то она дает по одной единице во всех промежуточных нулевых разрядах и две единицы в том разряде, для которого занималась.
То есть что бы из последнего 0 вычесть единицу. идем в третий разряд от конца (где есть 1), забираем ее оттуда, там становится 0, во втором разряде становится 1, и в последнем разряде становится 1 и единица в уме. Из той которая в уме вычитаем единицу внизу, в итог идет 1
К сожалению не знаю как это понятно можно нарисовать.
при помещении в отдельный файл код из функции Task2() можно поместить в глобальную область.
'''
Numbers = [int(i) for i in LoadDataFromFile('input.txt', 'utf-8').split('\n')]
Dump('Output.txt', Product(Numbers), 'utf-8')
P.S Не советую что то менять, если вы плохо разбираетесь. Решение представляет собой цельную программу, которая выполняет оба задания сразу.
P.S 2 Код работает для интерпретатора Python 3.5 и выше
P.S 3 Код протестирован
P.S 4 Файл, в котором лежат входные данные для задачи 2, должен называться input.txt и лежать в одной директории с файлом программы
P.S 5 Если вы тупо скопируете код, Интерпретатор может начать ругаться. Это вызвано тем, что наш любимый сайт подменяет табуляции и подряд идущие пробелы каким то своим дурацким символом, который не может переварить интерпретатор
10101
Объяснение:
Надо занимать единицу из старшего разряда, при этом помнить, что в случаях, когда занимается единица старшего разряда, она дает две единицы младшего разряда (одну из которых держим в уме).
Если занимается единица через несколько разрядов, то она дает по одной единице во всех промежуточных нулевых разрядах и две единицы в том разряде, для которого занималась.
То есть что бы из последнего 0 вычесть единицу. идем в третий разряд от конца (где есть 1), забираем ее оттуда, там становится 0, во втором разряде становится 1, и в последнем разряде становится 1 и единица в уме. Из той которая в уме вычитаем единицу внизу, в итог идет 1
К сожалению не знаю как это понятно можно нарисовать.
--- Python 3.8.3 ---
#Не удаляйте импорты
import typing
from typing import Callable
from typing import AnyStr
from typing import Any
from typing import Iterable
from typing import List
#DEFINING USER TYPES
Numeric = typing.TypeVar('Numeric', int, float, complex)
#ENDDEF
#Решение задания 1
def StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None) -> int:
counter = 0
if splitter:
ToAnalyse = RawString.split(splitter)
else:
ToAnalyse = list(RawString)
for item in ToAnalyse:
if Selector(item): counter += 1
return counter
#Вс функция для решения задания 2. Возвращает считанные из файла данные
def LoadDataFromFile(fname:AnyStr, encoding:AnyStr):
with open(fname, 'r', encoding=encoding) as f:
rawData = f.read()
return rawData
def Product(data: Iterable[Numeric]):
#Перемножает все значения в переданной последовательности.
#Последовательность НЕ МОЖЕТ содержать какие либо элементы, кроме чисел
p = 1
for i in data: p *= i
return p
def Dump(fname: AnyStr, data: AnyStr, encoding: AnyStr):
with open(fname, 'w', encoding=encoding) as f:
f.write(str(data))
def Task1():
'''
Использует фукнцию StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None)
При помещении в отдельный файл функции Task2, в этот же файл необходимо поместить фукнцию StringCount(), а так же выполнить следующие импорты:
import typing
from typing import Any
from typing import AnyStr
from typing import Callable
При помещении в отельный файл код из функции Task1() можно поместить в глобальную область.
'''
RawNum = input()
fives = StringCount(RawNum, lambda s: s == '5')
print(f'"5" count: {fives}')
def Task2():
'''
Использует функции:
LoadDataFromFile(fname:AnyStr, encoding:AnyStr)
Dump(fname: AnyStr, data: AnyStr, encoding: AnyStr)
При помещении функции Task2 в отдельный файл,
в этот же файл необходимо поместить функцию LoadDataFromFile(), Функцию Dump(),
а так же выполнить следующие импорты:
import typing
from typing import Any
from typing import AnyStr
from typing import Iterable
а так же сразу после импортов добавить следующую строку:
Numeric = typing.TypeVar('Numeric', int, float, complex)
при помещении в отдельный файл код из функции Task2() можно поместить в глобальную область.
'''
Numbers = [int(i) for i in LoadDataFromFile('input.txt', 'utf-8').split('\n')]
Dump('Output.txt', Product(Numbers), 'utf-8')
P.S Не советую что то менять, если вы плохо разбираетесь. Решение представляет собой цельную программу, которая выполняет оба задания сразу.
P.S 2 Код работает для интерпретатора Python 3.5 и выше
P.S 3 Код протестирован
P.S 4 Файл, в котором лежат входные данные для задачи 2, должен называться input.txt и лежать в одной директории с файлом программы
P.S 5 Если вы тупо скопируете код, Интерпретатор может начать ругаться. Это вызвано тем, что наш любимый сайт подменяет табуляции и подряд идущие пробелы каким то своим дурацким символом, который не может переварить интерпретатор