IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите решить/разобраться с задачей., Задача-ребус
Casual
сообщение 29.04.2008 9:08
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Решить арифметический ребус КИОТИО=ТОКИО. Вместо каждой буквы необходимо поставить некоторую цифру, причём одинаковые буквы означают одинаковые цифры, а различные буквы-различные цифры.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
volvo
сообщение 29.04.2008 9:13
Сообщение #2


Гость






Множества: загадка-ребус
Алгоритм решения ребуса
помогите решить ребус!

Разбирайся...
 К началу страницы 
+ Ответить 
Casual
сообщение 29.04.2008 15:49
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Сложно новичку в этом разобраться... Подкиньте идей. В чем смысл задачи? Что должно получится в конце?

Добавлено через 4 мин.
В условии задачи написано КИО*ИО=ТОКИО. Вот думаю, может опечатка? Может правильно должно быть КИОТИО=ТОКИО?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.04.2008 16:10
Сообщение #4


Гость






Цитата
В условии задачи написано КИО*ИО=ТОКИО. Вот думаю, может опечатка?
Никакая не опечатка, нормальный ребус, решаемый...

Цитата
Что должно получится в конце?
Правильное математически выражение, в котором разные буквы заменены разными цифрами, а одинаковые - одинаковыми... Конкретно в твоем случае получается:
625*25=15625

Я ж привел тебе ссылки с примерами решенных ребусов. Посмотри, что и как там делается, что именно непонятно? В чем сложность?

Вот тут еще глянь: Ребусы
Там приведен еще один способ решения ребусов...
 К началу страницы 
+ Ответить 
Casual
сообщение 29.04.2008 17:01
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Мой ребус также решается, как в тех задачах? Так я не видел чтобы говорилось, что разные буквы-разные цифры, а одинаковые буквы-одинаковые цифры.

Добавлено через 3 мин.
В смысле тех задачах не видел.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.04.2008 17:19
Сообщение #6


Гость






Цитата
Так я не видел чтобы говорилось, что разные буквы-разные цифры, а одинаковые буквы-одинаковые цифры.
Это подразумевается самим понятием "ребус"... Кстати:
Цитата(Amro @ 28.12.2003 20:53) *
дело состоит в том что каждой букве соответствует своя цифра, каждая буква представляется в виде одной единственной цифры...
- это по-твоему что значит?

Цитата
Мой ребус также решается, как в тех задачах?
Абсолютно, только в вышеприведенных ребусах находится СУММА двух выражений, тебе надо найти их ПРОИЗВЕДЕНИЕ. Вот и вся разница.
 К началу страницы 
+ Ответить 
Casual
сообщение 29.04.2008 19:46
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Вот писал программу по тем ребусам, которые вы выложили, и... запутался! Начало и конец вроде правильные, а середину не понял.

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. никогда не решал задачи с буквами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.04.2008 20:14
Сообщение #8


Гость






Я ж говорил: не сумму считать надо, а произведение:

    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
сообщение 29.04.2008 20:33
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Вот, что получилось в итоге:

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.


и она не работает!
Просто пустой черный экран.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.04.2008 21:07
Сообщение #10


Гость






Цитата
и она не работает!
Естественно... Во-первых, переменные G и W можно вообще убрать - они не нужны... А во-вторых, посмотри внимательно, по тем ссылкам, которые я привел: извлечение из множеств происходит в ОБРАТНОМ порядке... То есть, если у тебя

include(dig,k);
...
include(dig,i);
...
include(dig,o);
...
include(dig,t);
, то извлекать-то надо вот так:
      exclude(dig,t); { это самый внутренний цикл }
...
exclude(dig,o);
...
exclude(dig,i);
...
exclude(dig,k); { это - самый внешний цикл }

А у тебя что творится?
 К началу страницы 
+ Ответить 
Casual
сообщение 30.04.2008 17:12
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  0  +


Спасибо большое тебе! Все работает! Что твое dig, include(dig,t) и exclude(dig,i) в программе?


Добавлено через 4 мин.
Опечатка! Что такое dig, include(dig,t) и exclude(dig,i) в программе?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"