• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Free Pascal. Полный перебор. Арифметические ребусы

  • Автор темы Автор темы Léon1
  • Дата начала Дата начала

Léon1

С# - learn or die
Поддержка
Регистрация
17 Дек 2011
Сообщения
2,438
Реакции
178
Баллы
0
Free Pascal. Полный перебор. Арифметические ребусы

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

Вот я расшифровала ребус:

Program GodVek;
uses crt;
var g,o,d,v,e,k,l:byte;
begin
clrscr;
l:=0;
for g:=1 to 7 do
for o:=0 to 7 do
for d:=0 to 7 do
for v:=1 to 7 do
for e:=0 to 7 do
for k:=0 to 7 do
if (4*(100*g+10*o+d)=100*v+10*e+k)
and(g<>o)and(g<>d)and(g<>v)and(g<>e)and(g<>k)
and(o<>d)and(o<>v)and(o<>e)and(o<>k)
and(d<>v)and(d<>e)and(d<>k)
and(v<>e)and(v<>k)
and(e<>k) then
begin
writeln(g,o,d,'+',g,o,d,'+',g,o,d,'+',g,o,d,'=',v,e,k);
l:=l+1;
begin
write('Press Enter...');
readln;
end;
end;
readln
end.

Помогите со второй частью задачи "Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей."
 
Последнее редактирование:
А из каких соображений исключены восьмерки и девятки?
 
А из каких соображений исключены восьмерки и девятки?
Да извините исправлю!
Program GodVek;
uses crt;
var g,o,d,v,e,k,l:byte;
begin
clrscr;
l:=0;
for g:=1 to 9 do
for o:=0 to 9 do
for d:=0 to 9 do
for v:=1 to 9 do
for e:=0 to 9 do
for k:=0 to 9 do
if (4*(100*g+10*o+d)=100*v+10*e+k)
and(g<>o)and(g<>d)and(g<>v)and(g<>e)and(g<>k)
and(o<>d)and(o<>v)and(o<>e)and(o<>k)
and(d<>v)and(d<>e)and(d<>k)
and(v<>e)and(v<>k)
and(e<>k) then
begin
writeln(g,o,d,'+',g,o,d,'+',g,o,d,'+',g,o,d,'=',v, e,k);
l:=l+1;
begin
write('Press Enter...');
readln;
end;
end;
readln
end.
 
Да извините исправлю!
То есть по ошибке? А я-то думал - вдруг какие-то математические тому основания есть? Ну ладно.
Уточните, о какой "сумме цифр" идет речь? О сумме
g+o+d+v+e+k? Или нет?
 
begin
writeln(g,o,d,'+',g,o,d,'+',g,o,d,'+',g,o,d,'=',v, e,k);
l:=l+1;
if k mod 20=0 then {решений много, через 20 делаем задержку для просмотра}
и это изменила.
Подскажите как найти значения цифр, при которых сумма цифр в результате окажется наибольшей.
 
То есть по ошибке? А я-то думал - вдруг какие-то математические тому основания есть? Ну ладно.
Уточните, о какой "сумме цифр" идет речь? О сумме
g+o+d+v+e+k? Или нет?

о сумме god+god+god+god=vek, т.е. vek!
вывести то число, где сумма цифр (vek) окажется наибольшей!
 
вывести то число, где сумма цифр (vek) окажется наибольшей!
Хм... у меня получается, что таких комбинаций (с одинаковой максимальной суммой) тоже несколько. Придется через массивы. Сейчас сделаю.
 
Вот:
Код:
uses crt;
var
 g1,o1,d1,v1,e1,k1,S:Array[1..100] of byte;
 g,o,d,v,e,k,l,i,M:byte;
begin
 clrscr;
 l:=0;
 for g:=1 to 9 do
  for o:=0 to 9 do
   for d:=0 to 9 do
    for v:=1 to 9 do
     for e:=0 to 9 do
      for k:=0 to 9 do
       if (4*(100*g+10*o+d)=100*v+10*e+k)
          and(g<>o)and(g<>d)and(g<>v)and(g<>e)and(g<>k)
          and(o<>d)and(o<>v)and(o<>e)and(o<>k)
          and(d<>v)and(d<>e)and(d<>k)
          and(v<>e)and(v<>k)
          and(e<>k) then
        begin
         Inc(l);
         writeln(g,o,d,'+',g,o,d,'+',g,o,d,'+',g,o,d,'=',v,e,k);
         S[l]:=v+e+k;
         g1[l]:=g;
         o1[l]:=o;
         d1[l]:=d;
         v1[l]:=v;
         e1[l]:=e;
         k1[l]:=k;
         If (l mod 20)=0 then
          begin
           write('Press Enter...');
           readln;
          end;
        end;
 M:=0;
 for i:=1 to l do
  if S[i]>M then M:=S[i];
 writeln;
 writeln('Combinations with maximal sum of figures in "vek" (',M,'):');
 for i:=1 to l do
  if S[i]=M then
   writeln(g1[i],o1[i],d1[i],'+',g1[i],o1[i],d1[i],'+',g1[i],o1[i],d1[i],'+',g1[i],o1[i],d1[i],'=',v1[i],e1[i],k1[i]);
 readln;
end.
 
Спасибо большое за помощь!
 

Вложения

  • 81225846_large_programmers.webp
    81225846_large_programmers.webp
    77.4 KB · Просмотры: 273
Назад
Сверху