Модераторы: Alx, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Брайль, олимп задача 
:(
    Опции темы
Fixin
Дата 14.3.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Известно, что в книгах для слепых для обозначения различных букв используются различные комбинации выступов, которые читающий различает наощупь. Пусть для обозначения буквы используется прямоугольник шириной M мм и высотой N мм, причем некоторые входящие в него квадратики размера 1×1 содержат выступ.

Поскольку слепой не видит границ прямоугольника, то он не может различить комбинации, получающиеся друг из друга сдвигом. Так, он не может различить комбинации а) и б) на рисунке 1. (В то же время комбинации а) и в) являются различимыми, поскольку не могут быть получены друг из друга сдвигом)


Рисунок 1

Из-за этого при разработке алфавита для слепых появилась проблема: сколько различных букв можно представить с помощью выступов, если запрещается сопоставлять различным буквам комбинации, получающиеся друг из друга сдвигом. Прямоугольник совсем без выступов также нельзя использовать в качестве буквы (поскольку при написании слова между некоторыми буквами может появиться такой прямоугольник, например между а) и г) на рисунке 1).



Требуется подсчитать количество различных букв, которые можно представить таким способом, если прямоугольник имеет размер N×M.

В качестве примера, все буквы размера 2×2 приведены на рисунке 2. (Среди комбинаций, отвечающих одной букве, приведена только одна)


Рисунок 2

Формат входных данных

Входной файл Input.txt содержит числа M и N, разделенные пробелом. Поскольку человек одновременно не может воспринимать слишком много информации, M×N <= 30.

Формат выходных данных

Выведите в выходной файл Output.txt единственное число - количество различных букв, которые слепой сможет различить при заданном размере прямоугольника.

Примеры

input.txt
output.txt

2 2
10

3 3
400

картинки в файле.

Добавлено @ 18:11
Тут наверно мат анализ надо приложить. Кол-во расстановок как-то обыграть. smile

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  image001.rar
PM MAIL ICQ   Вверх
maxim1000
Дата 14.3.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 2
Всего: 110



можно попробовать пронормировать фигуры: сдвинуть влево и вверх, пока не упрутся в границу прямоугольника...


--------------------
qqq
PM WWW   Вверх
Fixin
Дата 15.3.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Цитата(maxim1000 @ 14.3.2005, 18:37)
можно попробовать пронормировать фигуры: сдвинуть влево и вверх, пока не упрутся в границу прямоугольника...

Т. е. просто перебрать все варианты? smile А может все-таки что-то подразумевается? smile
PM MAIL ICQ   Вверх
Fixin
Дата 16.3.2005, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Ну что? Никаких соображений? Перебором всегда во время не укладывается.
PM MAIL ICQ   Вверх
MBo
Дата 17.3.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 1
Всего: 18



для квадратных решеток (N=M), похоже, получается closed-form выражение (но числа огромные), для прямоугольных пока не видно (за исключением Nx1 smile ).
PM MAIL   Вверх
Akina
Дата 17.3.2005, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Вот теперь работает...
Код
xCount = 0
Mask1 = 2 ^ M - 1
Mask2 = 0
For i = 0 To N - 1
    Mask2 = Mask2 + 2 ^ (i * M)
Next i
For i = 1 To 2 ^ (M * N) - 1
    If ((i And Mask1) > 0) And ((i And Mask2) > 0) Then
        xCount = xCount + 1
    End If
Next i
Print xCount



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 17.3.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Одно плохо - на больших M и N получается нечто слишком многобитное - впрочем никто не мешает модифицировать под работу в строковой форме...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MBo
Дата 17.3.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 1
Всего: 18



Akina
приведи, pls , результаты для M=N=2..5
PM MAIL   Вверх
Akina
Дата 17.3.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



2 2: 10
2 3: 44
2 4: 184
2 5: 752
3 3: 400
3 4: 3392
3 5: 27904
4 4: 57856
4 5: 954368
5 5: 31522816


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MBo
Дата 17.3.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 1
Всего: 18



Akina
Спасибо.
PM MAIL   Вверх
Fixin
Дата 17.3.2005, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Ух.... Спасибо. Сейчас посмотрю. Потом еще приду ;)
Добавлено @ 18:46
Супер. А как это придумано? Расскажи мысли, теорию и т. д. А? Мне не решение в основном интересует, а логика. К очень важной олимпиаде готовлюсь...
PM MAIL ICQ   Вверх
Fixin
Дата 17.3.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



And тут побитовый? А что проверяем?
PM MAIL ICQ   Вверх
Fixin
Дата 17.3.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Код
Mask1 = 2 ^ M - 1
В Маск1 - колво всех возможных вариантов в каждой строке. -1 потому что нуль - не вариант.
Код
Mask2 = 0
For i = 0 To N - 1
    Mask2 = Mask2 + 2 ^ (i * M)
Next i
Тут кол-во вариантов в зависимомти от кол-ва строк. Почему 0...Н-1 непонятно.
Код
For i = 1 To 2 ^ (M * N) - 1
    If ((i And Mask1) > 0) And ((i And Mask2) > 0) Then
        xCount = xCount + 1
    End If
Next i
Интуитивно что-то там вертится, но определенных форм не приобретает... smile
PM MAIL ICQ   Вверх
Akina
Дата 18.3.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Если символ допускает сдвиг вправо или вниз - отбросить.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Fixin
Дата 18.3.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



Угу. А это?
Код
Mask2 = 0
For i = 0 To N - 1
    Mask2 = Mask2 + 2 ^ (i * M)
Next i

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.