Загрузка данных


import sys

def solve():
    # Чтение всех входных данных
    input_data = sys.stdin.read().split()
    if len(input_data) < 2:
        return
        
    try:
        s = int(input_data[0])
        p = int(input_data[1])
    except ValueError:
        print("Malformed input")
        return

    # Проверка ограничений (int в Python автоматически 64-битный и выше)
    if not (1 <= s < 10**12 and 4 <= p < 10**12):
        print("Malformed input")
        return

    # Максимально возможная сторона a, чтобы a <= b при 2(a+b) <= p
    a_max = p // 4
    if a_max == 0:
        print(0)
        return

    p_half = p // 2
    
    # Бинарный поиск точки пересечения ограничений площади и периметра
    # Ищем наибольшее a, такое что s // a <= p_half - a
    low, high = 1, a_max
    a_cross = 0
    
    while low <= high:
        mid = (low + high) // 2
        if s // mid <= p_half - mid:
            a_cross = mid
            low = mid + 1
        else:
            high = mid - 1

    ans = 0

    # Участок 1: ограничены площадью (a <= a_cross)
    # b может расти до s // a
    limit1 = min(a_cross, a_max)
    if limit1 >= 1:
        for a in range(1, limit1 + 1):
            b_max = s // a
            if b_max >= a:
                ans += b_max - a + 1

    # Участок 2: ограничены периметром (a_cross < a <= a_max)
    # b может расти до p_half - a
    start2 = a_cross + 1
    if start2 <= a_max:
        # Это арифметическая прогрессия. 
        # Количество членов:
        n = a_max - start2 + 1
        # Первый член (для a = start2):
        term1 = p_half - 2 * start2 + 1
        # Последний член (для a = a_max):
        term2 = p_half - 2 * a_max + 1
        # Сумма арифметической прогрессии
        ans += n * (term1 + term2) // 2

    print(ans)a

if __name__ == '__main__':
    solve()