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()