Помощь - Поиск - Пользователи - Календарь
Полная версия: Алгоритм решения ребуса
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
$rvr4vr
Составить алгоритм решения ребуса РАДАР=(Р+А+Д)^4. Строки использывать нелзя!! nea.gif
мисс_граффити
перебором...
ввести 3 переменные: Р,А,Д - и вперед.
volvo
Ищи алгоритм решения "Volvo + Fiat = Motor" у нас на форуме. Он подойдет и для твоего случая...
мисс_граффити
ой...
только ключевые слова при поиске вводи Fiat Motor
smile.gif)

Кстати, допустимы ли решения, когда разным буквам соответствуют одинаковые цифры?
$rvr4vr
нашел я этот фиат + вольво и.... ни фига не понял. особенно как ЭТО переделать под мой случай. помогите ламмеру разобраться плз... unsure.gif mega_chok.gif
-Volvo-
Цикл по трем переменным: R, A, D... Основное выражение внутри цикла:
    sum := R*10000 + A*1000 + D*100 + A*10 + R;
rad_4 := sqr(sqr(R+A+D));
if sum = rad_4 then
writeln(':', r,a,d,a,r,'=',r,a,d,'^4');

(Набирал прямо здесь, так что могут быть ошибки в синтаксисе, хотя вряд-ли...)
$rvr4vr
вот так получилось у меня только она не работает.
Код

{radar=(r+a+d)^4}
uses crt;
var
  r,a,d: 0 .. 3;
  dig : set of 0..3;
  sum,rad_4: longint;
begin
clrscr;
   for r:=0 to 3 do begin
    include(dig,r);
     for a:=0 to 3 do if not (a in dig) then begin
      include(dig,a);
       for d:=0 to 3 do if not (d in dig) then begin
        include(dig,d);
          sum := r*10000 + a*1000 +d*100 + a*10 + r;
          rad_4:=sqr(sqr(r+a+d));    
          if sum = rad_4 then          {не выполняется это условие}
            writeln(r,a,d,a,r,'=(',r,'+',a,'+',d,')^4');
          exclude(dig, r);
       end;
      exclude(dig,a);
     end;
    exclude(dig,d);
   end;

  readln;
end.

где-то с час ковырял. не работает. может где ошибся?
volvo
А чего ты цифры-то так ограничил? Не до 3, а до 9 должен проверять... Тогда все получается:

uses crt;

var
r, a, d: 0 .. 9;

dig : set of 0..9;
sum, rad_4: longint;

begin
clrscr;
for r:=0 to 9 do begin
include(dig,r);
for a:=0 to 9 do if not (a in dig) then begin
include(dig,a);
for d:=0 to 9 do if not (d in dig) then begin
include(dig,d);

sum := r*10000 + a*1000 +d*100 + a*10 + r;
rad_4:=sqr(sqr(r+a+d));
if sum = rad_4 then
writeln(r,a,d,a,r,'=(',r,'+',a,'+',d,')^4');

exclude(dig,d);
end;
exclude(dig,a);
end;
exclude(dig,r);
end;
end.


Цитата(Console)
14641=(1+4+6)^4
$rvr4vr
в начале у меня так и было, тоже не работало. но теперь я понял почему
у меня было
Код

       exclude(dig, r);  
     end;      
   exclude(dig,a);    
  end;  
exclude(dig,d);  
end;


сделал наоборот и все заработало. спасибо за помощь. give_rose.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.