Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 64

Решить ребус: дома*5=улицы

31.01.2015, 14:58. Показов 1819. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решить ребус : ДОМА*5=УЛИЦЫ, вот мой код, он то считает, но неправильно , не могу найти ошибку
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const z=10;
var d,m,o,a,u,l,i,c,y,p1,p2,p3,p4,p5,pr,doma:integer;
ulicy:longint;
begin
for a:=1 to 9 do
if (a<>5) and (a<>0) then  
begin
pr:=a*5 div z;
y:=a*5 mod z;
for m:=0 to 9 do
if (m<>y)and(m<>a) then
begin
p1:=m*5+pr;
p2:=p1 div z;
c:=p1 mod z;
if (c<>m)and(c<>y)and(c<>a) then
for o:=0 to 9 do
if (o<>c)and(o<>m)and(o<>a)and(o<>y) then
begin
p3:=l*5+p2;
p4:=p3 div z;
i:=p3 mod z;
if (i<>0)and(i<>m)and(i<>c)and(i<>a)and(i<>y) then
for d:=1 to 9 do
if (d<>i)and(d<>o)and(d<>m)and(d<>c)and(d<>a)and(d<>y) then
begin
p5:=d*5+p4;
u:=p5 div z;
l:=p5 mod z;
if (l<>d)and(l<>o)and(l<>i)and(l<>m)and(l<>a)and(l<>y)and(l<>c)and(u<>l)and(u<>i)and(u<>c)and(u<>y)and(u<>d)and(u<>o)and(u<>m)and(u<>a)and(u<5) then
begin
doma:=d*1000+o*100+m*z+a;
ulicy:=u*10000+l*1000+i*100+c*z+y;
writeln(doma,'*5=',ulicy);
end;
end;
end;
end;
end;
readln;
end.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2015, 14:58
Ответы с готовыми решениями:

Ребус (Дома*5=Улицы)
Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых сумма...

Расшифровать ребус (4 * Окно = Дома)
Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых...

Решить ребус (7 * Дни = Годы)
Помогите решить задачу-ребус. Условие: ДНИ + ДНИ + ДНИ + ДНИ +

6
охотник
 Аватар для vint-81
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
31.01.2015, 16:47
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var i1,i2,i3,i4,j:integer;
    a:longint;
    m1,m2:set of byte;
begin
 writeln('ДОМА*5=УЛИЦЫ');
 j:=0;
 for i1:=1 to 9 do
  for i2:=0 to 9 do
   for i3:=0 to 9 do
    for i4:=0 to 9 do
     begin
      m1:=[];
      if (i1<>i2)and(i1<>i3)and(i1<>i4)and(i2<>i3)and(i2<>i4)and(i3<>i4)
       then begin include(m1,i1);include(m1,i2);include(m1,i3);include(m1,i4)end;
      a:=(i1*1000+i2*100+i3*10+i4)*5;
      m2:=[];
      if ((a mod 10)<>(a div 10 mod 10))and((a mod 10)<>(a div 100 mod 10))and
         ((a mod 10)<>(a div 1000 mod 10))and((a mod 10)<>(a div 10000))and 
         ((a div 10 mod 10)<>(a div 100 mod 10))and((a div 10 mod 10)<>(a div 1000 mod 10))and
         ((a div 10 mod 10)<>(a div 10000))and((a div 100 mod 10)<>(a div 1000 mod 10))and
         ((a div 100 mod 10)<>(a div 10000))and((a div 1000 mod 10)<>(a div 10000))and(a div 10000 <> 0)
       then
        begin
         include(m2,(a mod 10));include(m2,(a div 10 mod 10));
         include(m2,(a div 100 mod 10));include(m2,(a div 1000 mod 10));
         include(m2,(a div 10000));
        end;
      if (m1<>[])and(m2<>[])and(m1*m2=[])
       then 
        begin 
         write(i1*1000+i2*100+i3*10+i4,'*',5,'=',(i1*1000+i2*100+i3*10+i4)*5,' ');
         inc(j);
         if j=5 then begin writeln;j:=0 end
        end
     end;
end.
2
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
31.01.2015, 16:57
Цитата Сообщение от alexsius Посмотреть сообщение
Решить ребус : ДОМА*5=УЛИЦЫ, вот мой код, он то считает, но неправильно
по моему мнению, если допустить, что в знаках ДОМА, УЛИЦЫ нет цифры 5 (раз она уже есть в ребуесе в виде множителя), то ребус не имеет решения вообще.

а если допустить наличие цифры 5 среди букв Д О М А У Л И Ц Ы,
тогда решений получается многовато:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ ДОМА * 5 = УЛИЦЫ}
var d, o, m, a, u, l, i, c, y: integer;
  ulicy : LongInt;
begin
  for d := 1 to 9 do
    for o := 0 to 9 do
      if d <> o then
        for m := 0 to 9 do
          if o <> m then
            for a := 0 to 9 do
              if (d <> a) and (o <> a) and (d<>m) and (m <> a) { and (d<>5) and (o<>5) and (m<>5) and (a<>5) } then begin
                ulicy := (d * 1000 + o * 100 + m * 10 + a) * 5;
                if ulicy > 10000 then begin
                  y := ulicy mod 10;
                  c := (ulicy mod 100) div 10;
                  i := (ulicy mod 1000) div 100;
                  l := (ulicy mod 10000) div 1000;
                  u := (ulicy div 10000);
                  if {(u <> 5) and (l <> 5) and (i <> 5) and (c<>5) and (y<>5) and}
                    (u <> l) and (u <> i) and (u <> c) and (u <> y) and (u <> d) and (u <> o) and (u <> m) and (u <> a)
                    and (l <> i) and (l <> c) and (l <> y) and (l <> d) and (l <> o) and (l <> m) and (l <> a)
                    and (i <> c) and (i <> y) and (i <> d) and (i <> o) and (i <> m) and (i <> a)
                    and (c <> y) and (c <> d) and (c <> o) and (c <> m) and (c <> a)
                    and (y <> d) and (y <> o) and (y <> m) and (y <> a) then
                    WriteLn(d, o, m, a, ' * 5 = ', ulicy);
                end
              end;
  readln;
end.
2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
02.02.2015, 11:37
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var
  D, O, M, A,
  U, L, I, C, Y : Byte;
  Cifry : Set of Byte;
begin
  Cifry := [];
  for D := 1 to 9 do
    begin
      Include(Cifry, D);
      for O := 0 to 9 do
        if Not (O in Cifry) then
          begin
            Include(Cifry, O);
            for M := 0 to 9 do
              if Not (M in Cifry) then
                begin
                  Include(Cifry, M);
                  for A := 0 to 9 do
                    if Not (A in Cifry) then
                      begin
                        Include(Cifry, A);
  for U := 1 to 9 do
    if Not (U in Cifry) then
      begin
        Include(Cifry, U);
        for L := 0 to 9 do
          if Not (L in Cifry) then
            begin
              Include(Cifry, L);
              for I := 0 to 9 do
                if Not (I in Cifry) then
                  begin
                    Include(Cifry, I);
                    for C := 0 to 9 do
                      if Not (C in Cifry) then
                        begin
                          Include(Cifry, C);
                          for Y := 0 to 9 do
                            if Not (Y in Cifry) then
                              begin
  if (((D*10+O)*10+M)*10+A) * 5 = (((U*10+L)*10+I)*10+C)*10+Y then
    WriteLn(D, O, M, A, 'x5=', U, L, I, C, Y);
                              end;
                          Exclude(Cifry, C);
                        end;
                    Exclude(Cifry, I);
                  end;
              Exclude(Cifry, L);
            end;
        Exclude(Cifry, U);
      end;
                        Exclude(Cifry, A);
                      end;
                  Exclude(Cifry, M);
                end;
            Exclude(Cifry, O);
          end;
      Exclude(Cifry, D);
    end;
  WriteLn('.');
end.
Добавлено через 12 минут
Пишется методом спуска:
— первая цифра может быть от 1 до 9
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  D, O, M, A,
  U, L, I, C, Y : Byte;
  Cifry : Set of Byte;
begin
  Cifry := [];
  for D := 1 to 9 do
    begin
      Include(Cifry, D);
 
      Exclude(Cifry, D);
    end;
  WriteLn('.');
end.
— вторая цифра может быть от 0 до 9, но не равная первой
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  D, O, M, A,
  U, L, I, C, Y : Byte;
  Cifry : Set of Byte;
begin
  Cifry := [];
  for D := 1 to 9 do
    begin
      Include(Cifry, D);
      for O := 0 to 9 do
        if Not (O in Cifry) then
          begin
            Include(Cifry, O);
 
            Exclude(Cifry, O);
          end;
      Exclude(Cifry, D);
    end;
  WriteLn('.');
end.
— третья — не входящая во множество ранее выбранных цифр
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
  D, O, M, A,
  U, L, I, C, Y : Byte;
  Cifry : Set of Byte;
begin
  Cifry := [];
  for D := 1 to 9 do
    begin
      Include(Cifry, D);
      for O := 0 to 9 do
        if Not (O in Cifry) then
          begin
            Include(Cifry, O);
            for M := 0 to 9 do
              if Not (M in Cifry) then
                begin
                  Include(Cifry, M);
 
                  Exclude(Cifry, M);
                end;
            Exclude(Cifry, O);
          end;
      Exclude(Cifry, D);
    end;
  WriteLn('.');
end.
— и т.д.
— последнюю букву можно не вносить во множество
Pascal
1
2
3
4
5
6
...
for Y := 0 to 9 do
  if Not (Y in Cifry) then
    begin
    end;
...
— собрать цифры в число можно двумя способами:
Pascal
1
2
D*1000+O*100+M*10+A
U*10000+L*1000+I*100+C*10+Y
или
Pascal
1
2
(((D*10+O)*10+M)*10+A)
(((U*10+L)*10+I)*10+C)*10+Y
Лично мне второй вариант больше нравится ;–)
— вывод – это просто перечень цифр–переменных:
Pascal
1
WriteLn(D,O,M,A, 'x5=', U,L,I,C,Y);
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
02.02.2015, 15:29
Поделюсь ссылкой на три изящных и универсальных кода для ребусов
 Комментарий модератора 
Ссылки на сторонние форумы запрещены правилами п.5.8


Добавлено через 1 час 11 минут
Прошу прощения.
В своё оправдание могу сказать, что хотел поделится другим взгядом на решение ребусов, но так как его предложили другие люди, то не стал просто копировать чужой код.
Буду внимательнее.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
02.02.2015, 21:44
ФедосеевПавел, два из этих трех кодов я уже приводил здесь, на этом форуме: вот они
2
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
02.02.2015, 23:32
Спасибо!
Да!!! Именно со вторым способом мне и хотелось познакомить. Вашим и его расширением от Lapp'а. Там, правда, ценность не только в "сухом" коде, а ещё и в рассуждениях, духе перфекционизма.

Теперь, в зависимости от настроения (не буду лукаваить), буду приводить эту ссылку, чтобы желающие задумываться о других способах решения могли увидеть идею.

МАГИЮ - В МАССЫ !
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2015, 23:32
Помогаю со студенческими работами здесь

Решить ребус (4 * Зерно = Колос)
Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых...

Известно число жителей проживающих в каждом доме улицы. Нумерация домов проведена подряд. Дома с нечётными номерами расположены...
Известно число жителей проживающих в каждом доме улицы. Нумерация домов проведена подряд (от 15 до 24). Дома с нечётными номерами...

Решить ребус: VOLVO - FIAT=MOTOR
Собстенно чёткой темы нету вот создал. Ну и сразу хочу попросить помощи с программой 1.Работа с данными типа множество, а именно...

Подбор активной акустики для дома (улицы)
посоветуйте пожалуйста хорошую акустическую систему для дома(усилок+колонки можно по отдельности как будет лучше) хочется чтобы было как...

Поиск почтового адреса с выделением индекса, улицы, дома и квартиры
Здравствуйте! Помогите пожалуйста решить задачи, используя регулярные выражения: Осуществить поиск почтового адреса с выделением индекса,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru