from math import log

next_lvl_k = 1.2
exp_per_level = 1000

def experience_for_level(level, q=next_lvl_k):
    # geometric progression b * (q ^ n - 1) / (q - 1)
    return round(exp_per_level * (q ** level - 1) / (q - 1))
    
def calculate_level(exp, q=next_lvl_k):
    lvl = int(log(1 + (exp / exp_per_level) * (q - 1), q))
    exp_next_lvl = experience_for_level(lvl + 1)

    if exp >= exp_next_lvl:
        return lvl + 1, exp_next_lvl - exp
    else:
        return lvl, exp - experience_for_level(lvl)
        
print(calculate_level(0) == (0, 0))
print(calculate_level(999) == (0, 999))
print(calculate_level(1000) == (1, 0))
print(calculate_level(1024) == (1, 24))
print(calculate_level(2200) == (2, 0))
print(calculate_level(3640) == (3, 0))
print(calculate_level(5368) == (4, 0))
print(calculate_level(5400) == (4, 5400 - 5368))