Консультация № 178530
20.05.2010, 20:41
43.65 руб.
20.05.2010, 21:10
0 13 1
Здравствуйте. Задача по комбинаторике. В среде Turbo Pascal написать программу (исп. процедуры и функции) разгадки числового ребуса СССР=Р^Ф.

Обсуждение

давно
Профессор
230118
3054
20.05.2010, 20:49
общий
воронова любовь:
Вы задали вопрос не в ту рассылку. Здесь могут решить задачу, а не написать программу.
Неизвестный
21.05.2010, 09:32
общий
Условие задачи мне непонятно. Если буквами зашифрованы десятичные цифры, тогда СССР - четырехзначное число, в котором первые три цифры совпадают, а четвертая - другая. Нл что тогда означает Р^Ф?
Неизвестный
21.05.2010, 09:45
общий
Гаряка Асмик:
Что-то Вы не то написали
Неизвестный
21.05.2010, 09:47
общий
воронова любовь:
ТОЛЬКО это ребуса или любого подобного? Но, в принципе, с Горяка Асмик согласен - это больше относится к головоломкам, но подумать можно. Тольк ответьте на мой вопрос: любой такой или ТОЛЬКО этот?
давно
Академик
320937
2216
21.05.2010, 10:09
общий
Гнедов Андрей:
Добрый день! 7776 = 6^5. Способ решения. Надо перебрать все четырехзначные числа вида XXXY и выяснить, не является ли какое-то из них степенью Y.
Неизвестный
21.05.2010, 11:00
общий
lamed:
Перебирать все четырёхзначные числа - не самый эффективный путь.
Можно показать, что Р - это одна из цифр 2, 3, 5 или 6:
СССР = Р^Ф
ССС0 = Р^Ф - Р
С*(1110) = Р*(Р^(Ф - 1) - 1)
2*3*5*37*С = Р*(Р^(Ф - 1) - 1)
Теперь надо вычислить все степени Р со значением от 1110 до 10000, и проверять что число Р^Ф - Р делится на 1110.
Неизвестный
21.05.2010, 11:08
общий
coremaster1:
Ведь это тоже вариант ответа! Напишите, тем более, что ответ платный не предполагает наличие только одного ответа
Неизвестный
21.05.2010, 11:35
общий
Boriss:
Думаю не стоит.
Я лишь описал возможный алгоритм, а требуется программа, желательно полным перебором, ибо автор вопроса врядли сможет объяснить почему в программе проверяются не все варианты P.
Пусть у кого-нибудь будет стимул реализовать тупой перебор
Неизвестный
21.05.2010, 11:43
общий
coremaster1:
Ну, мотри, как говаривала одна бабушка. Мне просто обидно, что есть варинаты, но нет ответа. Тем более, что автор вопроса не ответил, нужно рассотреть только этот вариант формулы. По этой причине считаю пока, что ТОЛЬКО ЭТОТ
Неизвестный
21.05.2010, 11:44
общий
coremaster1:
А Ваш вариант очень интересен. Даже жаль, что не Вы дадите ответ
давно
Старший Модератор
31795
6196
21.05.2010, 13:17
общий
Вариантов совсем мало.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Академик
320937
2216
21.05.2010, 13:30
общий
это ответ
Здравствуйте, воронова любовь! Программа проверялась на Turbo 7 и ABC. Идея решения и комментарии в тексте
Результат работы: 7776=6^5
Код:

program p178530;
{ Программа - разгадка числового ребуса СССР=Р^Ф }
{ Идея решения: перебрать все четырехзначные числа вида XXXY и выяснить,
не является ли какое-то из них степенью Y. }
var
i, j: integer; { счетчики начальных и последней цифр }
tested: integer; { тестируемое число }
r: integer; { показатель степени (или минус единица) }

function TryPower(val: LongInt; n: integer): integer;
{ Если число n=1 или val не является степенью числа n, возвращается -1 }
{ В противном случае возвращается показатель степени }
var
p: LongInt;
i: integer;
begin
if n=1 then
TryPower := -1
else
begin
p:= n;
i:= 1;
while p<val do
begin
p:=p*n;
i:= i+1;
end;
if p=val then { n^i==val }
TryPower := i
else
TryPower := -1;
end;
end; { TryPower }

begin { main }
for i:= 1 to 9 do { начальные цифры }
for j:= 1 to 9 do { последняя цифра }
if j<>i then begin
{ последняя цифра отличается от первой }
tested := 1110*i+j;
r := TryPower(tested, j);
if r in [2..9] then
writeln(tested, '=', j, '^', r);
end;
readln;
end.

давно
Академик
320937
2216
21.05.2010, 13:42
общий
coremaster1:
Добрый день! Согласен с Вами. Реализуйте свой ответ!
Форма ответа