Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 26.02.2012, 19:22   #1 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию 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.

Помогите со второй частью задачи "Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей."

Последний раз редактировалось Léon; 26.02.2012 в 19:28
Léon вне форума   Ответить с цитированием

Старый 26.02.2012, 19:22
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблему решать намного легче, если все о ней узнать

Помогите решить три задачи в Free Pascal
Полный мод корпуса

Старый 26.02.2012, 19:30   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А из каких соображений исключены восьмерки и девятки?
Vladimir_S вне форума   Ответить с цитированием
Старый 26.02.2012, 19:36   #3 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
А из каких соображений исключены восьмерки и девятки?
Да извините исправлю!
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.
Léon вне форума   Ответить с цитированием
Старый 26.02.2012, 19:40   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
Да извините исправлю!
То есть по ошибке? А я-то думал - вдруг какие-то математические тому основания есть? Ну ладно.
Уточните, о какой "сумме цифр" идет речь? О сумме
g+o+d+v+e+k? Или нет?
Vladimir_S вне форума   Ответить с цитированием
Старый 26.02.2012, 19:42   #5 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

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 делаем задержку для просмотра}
и это изменила.
Подскажите как найти значения цифр, при которых сумма цифр в результате окажется наибольшей.
Léon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.02.2012, 19:47   #6 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
То есть по ошибке? А я-то думал - вдруг какие-то математические тому основания есть? Ну ладно.
Уточните, о какой "сумме цифр" идет речь? О сумме
g+o+d+v+e+k? Или нет?
о сумме god+god+god+god=vek, т.е. vek!
вывести то число, где сумма цифр (vek) окажется наибольшей!
Léon вне форума   Ответить с цитированием
Старый 26.02.2012, 20:04   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
вывести то число, где сумма цифр (vek) окажется наибольшей!
Хм... у меня получается, что таких комбинаций (с одинаковой максимальной суммой) тоже несколько. Придется через массивы. Сейчас сделаю.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.02.2012, 20:18   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.02.2012, 20:29   #9 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Спасибо большое за помощь!
Миниатюры
81225846_large_programmers.jpg  
Léon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.