Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2008, 19:47   #1
mpegable
Пользователь
 
Регистрация: 03.05.2008
Сообщений: 13
По умолчанию Помогите решить задачу на множества (Паскаль)

Требуется расшифровать запись арифметического равенства, в котором цифры заменены буквами, причем разные цифры заменены разными буквами. В записи числа первая слева цифра не является нулём. Вывести на экран все решения ребуса, соответствующего варианту задания, и количество решений. Повторяющиеся действия в решении оформить в виде подпрограмм.

КУБ = (К + У + Б)3 (скобка в 3-й степени)

Примечание: Алгоритм решения ребуса на примере
МУХА + МУХА = СЛОН
При решении ребусов одинаковым буквам соответствуют одинаковые цифры.
Например, частью решений ребуса МУХА + МУХА = СЛОН являются: 1345 + 1345 = 2690, 1354 + 1354 = 2708, ... , 4865 + 4865 = 9730, их всего 77.
Просмотреть все числа МУХА от 1000 до 4999 (Т.к. число МУХА четырехзначное,
то берется минимальное четырехзначное число – 1000. Т. к. число СЛОН четырехзначное, то берется максимальное число МУХА = 4999, при котором сумма все еще будет четырехзначной.).
1. Занести все цифры числа МУХА во множество.
2. Подсчитать количество различных цифр во множестве, если для числа МУХА оно равно 4, то переход к шагу 3.
3. Определить число СЛОН как МУХА + МУХА.
4. Занести все цифры числа СЛОН во множество.
5. Подсчитать количество различных цифр во множестве, если для числа СЛОН оно равно 4, то переход к шагу 6.
6. Если у чисел МУХА и СЛОН нет одинаковых цифр, то все условия на ребус выполнены, переход к шагу 7.
7. Увеличение счетчика для подсчета решений, вывод решения ребуса.
8. Вывод общего количества решений ребуса.]

(Паскаль)
mpegable вне форума Ответить с цитированием
Старый 02.06.2008, 21:45   #2
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Мой вариант:
Код:
program rebus;
var
 u, b: 0..9;
 k: 1..9;
 n1, n2: integer;
 s: set of 0..9;
function Kub(k,u,b: integer):longint;
var
 i: integer;
 st: longint;
 begin
  st:= 1;
  for i:= 1 to 3 do
   st:= st*(k+u+b);
  Kub:= st;
 end;
begin
 s:= [];
 writeln('Vuvod reshenia rebusa KUB = (K+U+B)^3 : ');
 for k:= 1 to 9 do
  begin
   s:= s+[k];
   for u:= 0 to 9 do
    begin
     if not (u in s) then
      begin
       s:= s+[u];
       for b:= 0 to 9 do
        begin
         if not (b in s) then
          begin
           s:= s+[b];
           n1:= 100*k+10*u+b;
           n2:= Kub(k,u,b);
           if n1 = n2 then
            writeln(n1, ' = (', k,'+', u,'+', b,')^3');
           s:= s-[b];
          end;
        end;
       s:= s-[u];
      end;
    end;
   s:= s-[k];
  end;
 readln;
end.
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 27.10.2013, 18:55   #3
Endok70
 
Регистрация: 27.10.2013
Сообщений: 5
По умолчанию Есть короткий вариант(мой)

Есть короткий вариант(мой)

program rebyc_3;
uses CRT;
var K,U,B:integer;
begin
For K:=0 to 9 do
For U:=0 to 9 do
For B:=0 to 9 do
If (K+U+B)*sqr(K+U+B)=(K*100+U*10+B) then
Writeln((K+U+B)*sqr(K+U+B),' ; K = ',K,' ; U = ',U,' ; B = ',B);
Readln;
end.
Thank you
С вами был Endok70
Endok70 вне форума Ответить с цитированием
Старый 17.02.2015, 00:15   #4
Александер321
Новичок
Джуниор
 
Регистрация: 17.02.2015
Сообщений: 1
По умолчанию

Вот решение ребуса МУХА+МУХА=СЛОН через множества.
Код:
const t=9;
type Tdigits = set of 0..9;
var m,u,x,a,c,l,o,n: 0..9;
    digits:Tdigits;
    s: word;


begin
  digits:=[0..9];
  s:=0;
  for m:= 1 to t do
  begin
    exclude(digits,m);
    for u:= 0 to t do
      if u in digits then
      begin
        exclude(digits,u);
        for x:= 0 to t do
          if x in digits then
          begin
            exclude(digits,x);
            for a:= 0 to t do
              if a in digits then
              begin
                exclude(digits,a);
                s:=(m*1000+u*100+x*10+a)*2;
                if s<10000 then
                begin
                  c:=s div 1000;
                  l:=(s div 100) mod 10;
                  o:=(s div 10) mod 10;
                  n:=s mod 10;
                  if c in digits then
                  begin
                    exclude(digits,c);
                    if l in digits then
                    begin
                      exclude(digits,l);
                      if o in digits then
                      begin
                        exclude(digits,o);
                        if n in digits then
                          writeln('c=',c,' l=',l,' o=',o,' n=',n,' m=',m,' u=',u,' x=',x,' a=',a);
                        include(digits,o);
                      end;
                      include(digits,l);
                    end;
                    include(digits,c);
                  end;
                end;
                include(digits,a);
              end;
            include(digits,x);
          end;
        include(digits,u);
      end;
    include(digits,m);
  end;
  readln


end.

Последний раз редактировалось Stilet; 17.02.2015 в 07:46.
Александер321 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу на записи (Паскаль) mpegable Помощь студентам 1 16.06.2008 23:55
Помогите решить задачу(Паскаль) KocT9 Помощь студентам 1 02.06.2008 22:22
Помогите решить задачу на файлы (Паскаль) mpegable Помощь студентам 1 02.06.2008 18:08
Помогите решить задачу на строки (паскаль) mpegable Помощь студентам 1 27.05.2008 09:08