Пример тестового примера для интервью: Уравнения - PullRequest
0 голосов
/ 28 декабря 2011

Итак, есть сайт под названием интервьюstreet.com.Здесь мы можем найти сложные проблемы программирования.К сожалению, вы должны войти в систему, чтобы увидеть вопросы.

Вот краткое описание проблемы, которую я пытаюсь решить:

Найдите нет положительных интегральных решений дляуравнения (1/x) + (1/y) = 1/N! (прочитайте 1 на n факториал) Выведите единственное целое число, которое является числом положительных интегральных решений по модулю 1000007.

Например, когда N=3, (x,y) может быть:1012 *, (9,18), (8,24), (12,12), (42,7), (18,9), (24,8).Или так я думал.

Помогите мне, пожалуйста, особенно вам, кто решил эту проблему.Я только что написал для уравнения уравнения.Что-то не так с моим алгоритмом, могу ли я запросить вывод для первых 10 целых чисел?то есть N=2, N=3, N=4 ... N=10, чтобы я мог найти ошибку в моем алгоритме.Спасибо:)

РЕДАКТИРОВАТЬ: О, пожалуйста, не размещайте код решения, так как это разрушит удовольствие для меня и для людей, пытающихся решить эту проблему:)

Ответы [ 4 ]

3 голосов
/ 26 апреля 2012

Мои решения были приняты по интервью ул. Во-первых, мои решения не были приняты, но после того, как я увидел сообщение @Reinardus Surya Pradhit, я понял, что если пара (x, y) будет учтена дважды, так что я изменил его немного, и получил успех Я не буду публиковать здесь свое решение, но я могу рассказать вам тестовый пример для всех переменных из N = 3 -> N = 10 Здесь результат

N=3: 9
N=4: 21
N=5: 63 
N=6: 135
N=7: 405
N=8: 675
N=9: 1215
N=10: 2295

Мой совет: попробуйте выразить N! в простых числах от p1^q1 * p2^q2 * ... * pn^qn

2 голосов
/ 28 декабря 2011

Без учета специальной формы N! на данный момент, для решения уравнения

1/k = 1/x + 1/y

написать x = k + d. Тогда

1/y = 1/k - 1/(k + d) = d/(k*(k+d))

Задача определения количества решений из этого оставлена ​​в качестве упражнения для читателя.

0 голосов
/ 30 мая 2012

чтобы получить окончательный результат, нам нужно вычислить (2 * q1 + 1) * (2 * q2 + 1) * (2 * q3 + 1) ... Но как мы будем хранить результат, скажем, N =32327, который будет переполнен выше результата.Пожалуйста, поправьте меня, если я ошибаюсь

0 голосов
/ 28 декабря 2011

Важно иметь дело только с целыми числами, чтобы избежать ошибок округления: начните с перестановки уравнения в:

N!(X+Y)=XY

Я не уверен, куда идти.

...