|
Нужно найти такое X1, что P1^(X1-1) < P2, a P1^(X1) > P2.
После этого последовательно перебираем произведения (P1^K1)*(P2^K2),
где изначально K1 и K2 равны 1, и K1 на каждом шаге увеличивается на 1 пока не достигнет значения X1. После этого K1 приравнивается к 1, а K2 увеличивается на 1.
Продолжаем этот процесс до тех пор, пока не найдем такую пару (K1,K2),
при которой (P1^(K1-1))*(P2^(K2-1)) < P3, а (P1^(K1))*(P2^(K2-1)) > P3 и K1<X1,
либо, (P1^(1))*(P2^(K2)) > P3 и K1=X1.
Обозначим найденные значения K1 и K2 за X21 и X22 соответственно. Теперь можно перебирать произведения
(P1^K1)*(P2^K2)*(P3^K3) с начальными значениями K1=K2=K3=1, увеличивая на каждом шаге K1 на 1 и делая следующие две проверки.
Первая:если K1=X1, то увеличим K2 на 1, а K1 приравняем к 1.
Вторая: если K1=X21 и K2=X22, то увеличим K3 на 1, а K1 и K2 приравняем к 1. (Вторая проверка делается до первой).
Таким образом нужно сделать N шагов.
Алгоритм не самый лучший, но самый простой в описании.
Последний раз редактировалось petinv, 01.10.2009 в 17:39.
|