Решить арифметический ребус КИОТИО=ТОКИО. Вместо каждой буквы необходимо поставить некоторую цифру, причём одинаковые буквы означают одинаковые цифры, а различные буквы-различные цифры.
Сложно новичку в этом разобраться... Подкиньте идей. В чем смысл задачи? Что должно получится в конце?
Добавлено через 4 мин. В условии задачи написано КИО*ИО=ТОКИО. Вот думаю, может опечатка? Может правильно должно быть КИОТИО=ТОКИО?
volvo
29.04.2008 20:10
Цитата
В условии задачи написано КИО*ИО=ТОКИО. Вот думаю, может опечатка?
Никакая не опечатка, нормальный ребус, решаемый...
Цитата
Что должно получится в конце?
Правильное математически выражение, в котором разные буквы заменены разными цифрами, а одинаковые - одинаковыми... Конкретно в твоем случае получается: 625*25=15625
Я ж привел тебе ссылки с примерами решенных ребусов. Посмотри, что и как там делается, что именно непонятно? В чем сложность?
Вот тут еще глянь: Ребусы Там приведен еще один способ решения ребусов...
Casual
29.04.2008 21:01
Мой ребус также решается, как в тех задачах? Так я не видел чтобы говорилось, что разные буквы-разные цифры, а одинаковые буквы-одинаковые цифры.
Добавлено через 3 мин. В смысле тех задачах не видел.
volvo
29.04.2008 21:19
Цитата
Так я не видел чтобы говорилось, что разные буквы-разные цифры, а одинаковые буквы-одинаковые цифры.
Это подразумевается самим понятием "ребус"... Кстати:
Цитата(Amro @ 28.12.2003 20:53)
дело состоит в том что каждой букве соответствует своя цифра, каждая буква представляется в виде одной единственной цифры...
- это по-твоему что значит?
Цитата
Мой ребус также решается, как в тех задачах?
Абсолютно, только в вышеприведенных ребусах находится СУММА двух выражений, тебе надо найти их ПРОИЗВЕДЕНИЕ. Вот и вся разница.
Casual
29.04.2008 23:46
Вот писал программу по тем ребусам, которые вы выложили, и... запутался! Начало и конец вроде правильные, а середину не понял.
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.
Вот это место не понятно:
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=tokio) then writeln('kio*io=tokio: ',k,i,o,'*',i,o,'=,t,o,k,i,o);
как оно будет выглядеть правильно? и что оно вообще значит? P.S. никогда не решал задачи с буквами.
volvo
30.04.2008 0:14
Я ж говорил: не сумму считать надо, а произведение:
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);
Casual
30.04.2008 0:33
Вот, что получилось в итоге:
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.
и она не работает! Просто пустой черный экран.
volvo
30.04.2008 1:07
Цитата
и она не работает!
Естественно... Во-первых, переменные G и W можно вообще убрать - они не нужны... А во-вторых, посмотри внимательно, по тем ссылкам, которые я привел: извлечение из множеств происходит в ОБРАТНОМ порядке... То есть, если у тебя