Решить арифметический ребус КИОТИО=ТОКИО. Вместо каждой буквы необходимо поставить некоторую цифру, причём одинаковые буквы означают одинаковые цифры, а различные буквы-различные цифры.
http://forum.pascal.net.ru/index.php?showtopic=1275
http://forum.pascal.net.ru/index.php?showtopic=13171
http://forum.pascal.net.ru/index.php?showtopic=7066
Разбирайся...
Сложно новичку в этом разобраться... Подкиньте идей. В чем смысл задачи? Что должно получится в конце?
Добавлено через 4 мин.
В условии задачи написано КИО*ИО=ТОКИО. Вот думаю, может опечатка? Может правильно должно быть КИОТИО=ТОКИО?
Мой ребус также решается, как в тех задачах? Так я не видел чтобы говорилось, что разные буквы-разные цифры, а одинаковые буквы-одинаковые цифры.
Добавлено через 3 мин.
В смысле тех задачах не видел.
Вот писал программу по тем ребусам, которые вы выложили, и... запутался! Начало и конец вроде правильные, а середину не понял.
Program Rebus;
uses crt;
var
k, i, o, t: 0..9;
dig : set of 0..9;
tokio: longint;
sum,g,w : longint;
begin
clrscr;
for k:=0 to 9 do begin
include(dig,k);
for i:=0 to 9 do
if not (i in dig) then begin
include(dig,i);
for o:=0 to 9 do
if not (o in dig) then begin
include(dig,o);
for t:=0 to 9 do
if not (t in dig) then begin
include(dig,t);
g:=100; w:=100;
sum:=k*1000*g+(i+k)*100*w+(r+o)*1000+(b+b)*100+(o+i)*10+s+k;
tokio:=t*100000+o*10000+k*1000+k*100+o*10;
if (sum=sobaki) then writeln('kio*io=tokio: ',k,i,o,'*',i,o,'=,t,o,k,i,o);
exclude(dig,k);
end;
exclude(dig,i);
end;
exclude(dig,o);
end;
exclude(dig,t);
end;
readln;
end.
Я ж говорил: не сумму считать надо, а произведение:
mult := (100*k + 10*i + o) * (10*i + o);
tokio := t*10000+o*1000+k*100+i*10+o;
if mult = tokio then
writeln(':', k,i,o,'*',i,o,'=', t,o,k,i,o);
Вот, что получилось в итоге:
Program Rebus;
uses crt;
var
k, i, o, t: 0..9;
dig : set of 0..9;
tokio: longint;
mult,g,w : longint;
begin
clrscr;
for k:=0 to 9 do begin
include(dig,k);
for i:=0 to 9 do
if not (i in dig) then begin
include(dig,i);
for o:=0 to 9 do
if not (o in dig) then begin
include(dig,o);
for t:=0 to 9 do
if not (t in dig) then begin
include(dig,t);
g:=100; w:=100;
mult:= (100*k + 10*i + o) * (10*i + o);
tokio:= t*10000+o*1000+k*100+i*10+o;
if mult = tokio then
writeln(':', k,i,o,'*',i,o,'=', t,o,k,i,o);
exclude(dig,k);
end;
exclude(dig,i);
end;
exclude(dig,o);
end;
exclude(dig,t);
end;
readln;
end.
include(dig,k);, то извлекать-то надо вот так:
...
include(dig,i);
...
include(dig,o);
...
include(dig,t);
exclude(dig,t); { это самый внутренний цикл }А у тебя что творится?
...
exclude(dig,o);
...
exclude(dig,i);
...
exclude(dig,k); { это - самый внешний цикл }
Спасибо большое тебе! Все работает! Что твое dig, include(dig,t) и exclude(dig,i) в программе?
Добавлено через 4 мин.
Опечатка! Что такое dig, include(dig,t) и exclude(dig,i) в программе?