Пожалуйста, подпишитесь на официальный канал Codeforces в Telegram по ссылке https://t.me/codeforces_official. ×

Блог пользователя karimok

Автор karimok, история, 8 лет назад, По-русски

Здравствуйте,с праздником вас)

суть задачи такова

надо определить количество целочисленных решений (x,y) уравнения  ; |a|,|b| <=

  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

»
8 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

если а и b = 0 то ответ 0. если а или b = 0 то решение бесконечно (X, b) или (a, Y).

y = (b*x)/(x-a) пусть НОД (x,x-a) = p ==> x делится на p и a делится на p. Переберём p (делитель а). (сократили на p). b*z/(z — c). НОД(z,z-c) = 1. ==> b делится на z-c. Переберём делитель. Проверим, что НОД(z,z-c) = 1.

Сложность что-то порядка числа делителей a * число делителей b, должно успевать по времени.

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +13 Проголосовать: не нравится

Если a = 0 и b = 0, то ответ 0. Если a = 0 или b = 0, то ответ 1.

.

Значит, достаточно найти количество пар X, Y таких, что XY = ab. Тогда ответ будет 2σ(|ab|) - 1, где σ(x) — количество делителей x, -1 так как пара x = 0, y = 0 не подходит.

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

I found this:

a.y + b.x = x.y

b.x = y.(x-a)

y=(b.x) / (x-a);

x,y are integers so (a|b means b%a=0)

x-a| b.x

x-a| b.x — b.(x-a)

x-a| b.x — b.x + a.b

x-a| a.b

for every z (z|a.b) there is an integer pair (x,y) suitable to all conditions. So the answer is same with quantity of divisors of a.b