#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Nov  2 12:27:26 2019

@author: suwako
"""


def estEgyptienne(lst):
    last = lst[0]
    for element in lst[1:]:
        print(element,last)
        if element <= last or last < 2:
            return False
        last = element
    return True


def rationnel(lst):
    p, q = 0, 1
    for i in range(len(lst)):
        q *= lst[i]
        reduite = lst[:i]+lst[i+1:]
        terme = 1
        for element in reduite:
            terme *= element
        p += terme
    return (p, q)

def fractionEgyptienne(p, q):
    a = p
    b = q
    lst=[]
    while b % a != 0:
        print(a, b, lst)
        m = b // a + 1
        lst.append(m)
        a = a * m - b
        b = b * m
    print(a, b, lst)
    lst.append(b // a)
    return lst


def estPrefixe(u, v):
    if len(v) > len(u):
        return False
    for i in range(len(v)):
        if u[i] != v[i]:
            return False
    return True


def bord(u):
    for i in range(1, len(u)):
        if estPrefixe(u, u[i:]):
            return u[i:]
    return ""


def Bords(u):
    lst = [None]
    for k in range(1, len(u) + 1):
        lst.append(len(bord(u[:k])))
    return lst


def estFacteur(u, v):
    for i in range(len(u)-len(v) + 1):
        if estPrefixe(u[i:i+len(v)], v):
            return True
    return False


def estFacteurMP(u, v):
    bords = Bords(v)
    i=0
    while i <= len(u) - len(v):
        skip=False
        for j in range(len(v)):
            print(i, j)
            if u[i+j]!=v[j]:
                i += bords[j+1] + 1
                skip=True
                break
        if skip:
            continue
        return True
    return False
        