Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите решить
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
asxc
Заменить буквы цифрами так чтобы соотношение оказалось верным(одинаковым буквам соотведствуют одинаковые цифры, разным - разные)

ХРУСТ*ХРОХО=рррррррррр
это примет где рррррррр-это числа
Lapp
Цитата(asxc @ 5.05.2009 18:18) *
Заменить буквы цифрами так чтобы соотношение оказалось верным(одинаковым буквам соотведствуют одинаковые цифры, разным - разные)

ХРУСТ*ХРОХО=рррррррррр
это примет где рррррррр-это числа
Не совсем понятно, что такое "рррррррррр".
р=Р или нет?
asxc
да. я просто все мозги взорвал даже начало не могу придумать как сделать
volvo
Цитата
даже начало не могу придумать как сделать
Для начала неплохо было бы воспользоваться поиском (по слову ребус), и посмотреть, как вообще такое решается.

Кстати, приведенный тобой ребус решений не имеет. Ни одного. Проверяй, не ошибся ли в условии
Ozzя
Перебором, наверное.
Например, ХРУСТ*ХРОХО=РРРРРРРРРР

Х1УСТ*Х1ОХО=111111111
И перебирать для Х от 2 до 9 (УСТО назначить другие цифры, отличаеющиеся от 1,2)
Дало умножение Х1УСТ*Х1ОХО=111111111, то Break.

Только насколько я помню эту (или подобную) задачу. Тут и система счисления не 10-ная
Могу ошибаться. Давно это было


Добавлено через 5 мин.
Так должно быть?
Здесь условие нашел, в олимпиадных задачах.
Цитата
Заменить буквы цифрами так, чтобы соотношение оказалось верным:
ХРУСТ*ГРОХОТ=РРРРРРРРРРР
asxc
Я позвонил преподавателю. он сказал что не правильно дал условие там действительно
Заменить буквы цифрами так, чтобы соотношение оказалось верным:
ХРУСТ*ГРОХОТ=РРРРРРРРРРР
Ozzя
Тогда делай то, что тебе посоветовал Volvo
asxc
парни я чё то не могу разобраться. помогите плиз
Lapp
Цитата(asxc @ 12.05.2009 21:21) *
парни я чё то не могу разобраться. помогите плиз
В детстве я ужасно не любил такие ребусы. Их публиковали в разных журналах, типа Науки и Жизни. Как-то было непонятно, зачем на это время тратить..

Вот, смотри. На блюдечке. С голубой каемочкой.
var
i,h,r,u,s,t,g,o: byte;
a: set of byte;
hrust,grohot,rrr: Int64;

begin
for r:=1 to 9 do begin
a:=[r];
rrr:=r;
for i:=1 to 10 do rrr:=rrr*10+r;
for h:=0 to 9 do if not (h in a) then begin
a:=a+[h];
for u:=0 to 9 do if not (u in a) then begin
a:=a+[u];
for s:=0 to 9 do if not (s in a) then begin
a:=a+[s];
for t:=0 to 9 do if not (t in a) then begin
a:=a+[t];
for g:=0 to 9 do if not (g in a) then begin
a:=a+[g];
for o:=0 to 9 do if not (o in a) then begin
hrust:=(((h*10+r)*10+u)*10+s)*10+t;
grohot:=((((g*10+r)*10+o)*10+h)*10+o)*10+t;
if hrust*grohot=rrr then WriteLn(hrust,'*',grohot,'=',rrr);
end;
a:=a-[g]
end;
a:=a-[t]
end;
a:=a-[s]
end;
a:=a-[u]
end;
a:=a-[h]
end
end
end.

Единственное "но": кажется, в ТР нету типа Int64.. Так что, компилируй FPC или Delphy smile.gif.

Добавлено через 18 мин.
Собственно, как выясняется, условие различности всех букв - лишнее. Без него все равно единственное решение. Так что программа существенно укорачивается:
var
i,h,r,u,s,t,g,o: byte;
hrust,grohot,rrr: Int64;

begin
for r:=1 to 9 do begin
rrr:=r;
for i:=1 to 10 do rrr:=rrr*10+r;
for h:=0 to 9 do for u:=0 to 9 do for s:=0 to 9 do for t:=0 to 9 do for g:=0 to 9 do for o:=0 to 9 do begin
hrust:=(((h*10+r)*10+u)*10+s)*10+t;
grohot:=((((g*10+r)*10+o)*10+h)*10+o)*10+t;
if hrust*grohot=rrr then WriteLn(hrust,'*',grohot,'=',rrr);
end
end
end.

Считает чуть дольше, но все равно достаточно быстро (у меня этот вариант примерно секунду работает).
asxc
спасибо огромное
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.