На другом форуме мне ответили как решить эту задачу комбинаторно, вот код:
# length % 3 = 0; width % 2 = 0
def calculate(length, width):
degree = (length / 3) * (width / 2)
print(2 ** degree)
if __name__ == "__main__":
length = input("Enter L: ")
width = input("Enter W: ")
length = int(length)
width = int(width)
if length % 3 == 0:
if width % 2 == 0:
calculate(length, width)
else:
raise AssertionError("Wrong data!")
elif length % 2 == 0:
if width % 3 == 0:
calculate(width, length)
else:
raise AssertionError("Wrong data!")
else:
raise AssertionError("Wrong data!")
input()
Площадь двух соединённых плиток 2*3=6 можно взять за единицу, причём плитки могут соединятся двумя способами, а следовательно каждая полученная единица площади может принимать 2 состояния. Число всех состояний для двух единиц 2*2, для трёх 2*2*2 (формула комбинаторики для размещения из n по m), то есть в итоге 2 в степени количества единиц. Переменной degree присваивается количество данных единиц, после чего выводится 2 в степени degree.
Также спасибо
@encyclopedist за познавательную статью! По ней сделать решение будет намного интересней!