var
i,N,P1,P : integer;
BEGIN
readln(P); {ввод числа P}
i:=1; {счетчик}
P1:=1; {сюда будет накапливаться произведение}
repeat
inc(i);
P1:=P1*i;
until (P1=P);
N:=i;
wrtieln(N);
END.
поиск сомножителей...
=======================================
Произведение N первых нечетных чисел равно р. Сколько сомножителей взято?
=======================================
Цитата:
Originally posted by koder
Как решить такую задачку?
=======================================
Произведение N первых нечетных чисел равно р. Сколько сомножителей взято?
=======================================
Как решить такую задачку?
=======================================
Произведение N первых нечетных чисел равно р. Сколько сомножителей взято?
=======================================
Элементарно: заводишь переменную для произведения, присваиваешь в начале ее равной единице, заводишь другую переменную - счетчик (тоже вначале равный единице), далее в цикле увеличиваешь счетчик на единицу и умножаешь произведение на счетчик, после чего проверяешь, равно ли получившееся произведение числу P. Если да - выход из цикла. Вот пример кода на Pascal:
Код:
Цитата:
Originally posted by XXXX Pro
Элементарно: заводишь переменную для произведения, присваиваешь в начале ее равной единице, заводишь другую переменную - счетчик (тоже вначале равный единице), далее в цикле увеличиваешь счетчик на единицу и умножаешь произведение на счетчик, после чего проверяешь, равно ли получившееся произведение числу P. Если да - выход из цикла. Вот пример кода на Pascal:
Элементарно: заводишь переменную для произведения, присваиваешь в начале ее равной единице, заводишь другую переменную - счетчик (тоже вначале равный единице), далее в цикле увеличиваешь счетчик на единицу и умножаешь произведение на счетчик, после чего проверяешь, равно ли получившееся произведение числу P. Если да - выход из цикла. Вот пример кода на Pascal:
Код:
var
i,N,P1,P : integer;
BEGIN
readln(P); {ввод числа P}
i:=1; {счетчик}
P1:=1; {сюда будет накапливаться произведение}
repeat
inc(i);
P1:=P1*i;
until (P1=P);
N:=i;
wrtieln(N);
END.
i,N,P1,P : integer;
BEGIN
readln(P); {ввод числа P}
i:=1; {счетчик}
P1:=1; {сюда будет накапливаться произведение}
repeat
inc(i);
P1:=P1*i;
until (P1=P);
N:=i;
wrtieln(N);
END.
только по-моему в условии нечётные, так что ещё один inc... и условие until по-другому, так как если данное число не является произведением, то всё это обернётся в бесконечный цикл.. так что условие надо P1 >= P
з.ы. а вообще должен быть другой алгоритм... не должна такая задача в лоб решаться )))