# Exercice 11

def bissextile(a):
    if (a%4 == 0 and a%100 !=0) or a%400 == 0:
        return True 
    else:
        return False


def nbjoursannee(a):
    if bissextile(a):
        return 366
    else:
        return 365


def nbjoursmois(a, m):
    if m == 2:
        if bissextile(a):
            return 29
        else:
            return 28
    elif m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
        return 31
    else:
        return 30
        
def nbjours(jn, mn, an, j, m, a):
    n = 0
    
    # On vérifie les entrées
    
    # Si les deux années sont différentes
    if an != a :
        # jours restants dans le mois
        n += nbjoursmois(an, mn) - jn
        # mois restants dans l'année
        for i in range(mn+1, 13):
            n += nbjoursmois(an, i)
        # années pleines entre les deux dates
        for i in range(a - (an +1)):
            n += nbjoursannee(an+1+i)
        # jours de la dernière année
        n += j
        # mois de la dernière année
        for i in range(1, m):
            n += nbjoursmois(a, i)
            
    # Si les deux dates sont la même année mais pas le même mois
    elif mn != m:
        # jours restants dans le mois
        n += nbjoursmois(an, mn) - jn
        # mois pleins entre les deux dates
        for i in range(m - (mn+1)):
            n += nbjoursmois(an, an + 1 + i)
        # jours de la deuxième date
        n += j
    
    # Les deux dates sont la même année et le même mois
    else:
        n += j - jn
    return n
    
print(nbjours(1, 1, 2024, 15, 1, 2024)) #14
print(nbjours(1, 1, 2024, 1, 1, 2025)) # 366
print(nbjours(15, 3, 2024, 15, 8, 2024)) # 151
print(nbjours(20, 11, 1989, 26, 11, 2024)) # 12790