Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Правильный треугольник разбили на n единичных треугольников и записали в каждом из них числа от 1 до n по порядку (слева направо, сверху вниз). Два треугольника считаются соседними, если у них есть общая сторона. Существуют ли два соседних треугольника, сумма чисел в которых равна s?
Две строки входных данных содержат натуральные числа n и s. Гарантируется, что n — квадрат некоторого натурального числа.
Обратите внимание, что значения переменных в этой задаче могут превышать возможные значения 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Выведите в двух строках два числа в порядке возрастания — числа в соседних треугольниках, дающие требуемую сумму или одно число-1
, если нужную сумму набрать невозможно.
1 ≤ n ≤ 1016
1 ≤ s ≤ 1018
Баллы за каждый тест начисляются независимо.
Решения, верно работающие при n ≤ 100, получат не менее 60 баллов.
Смотри рисунок. Требуемая сумма не набирается нигде:
2 + 3 = 5; 3 + 4 = 7;
5 + 6 = 11; 6 + 7 = 13; 7 + 8 = 15; 8 + 9 = 17
1 + 3 = 4; 2 + 6 = 8; 4 + 8 = 12.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|