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

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

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

> Диагонали многоугольника
сообщение
Сообщение #1


Знаток
****

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

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


Задача следующая:
В выпуклом многоугольнике который имеет N вершин провели все диагонали, никакие три из них не пересекаются в одной точке. Найти количество частей на которые эти диагонали его розделили.
Задача в числе простых но в голову ничего не лезет...
Подскажите с помощью чего её можна решить?
Ведь зависимость между кол-вом вершин и числом елементов на которые его разбивают диагонали не линейная... Следовательно может быть здесь нужно задействовать рекурсию? или считать пересечения диагоналей? направте на путь истинный rolleyes.gif


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
можно и вообще без циклов
yes2.gif
WriteLn(trunc((n-1)*(n-2)*(sqr(n)-3*n+12) / 24));


Цитата
такчто в идеале прийдётся еще работать со строками чтоб получить полный результат %)
Про тип Comp (который может хранить значения от -263 + 1 до 263 - 1) не забывай. Тебе емкости этого типа - за глаза хватит, не надо придумывать самому себе проблемы на ровном месте.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(volvo @ 7.07.2009 10:58) *

yes2.gif
WriteLn(trunc((n-1)*(n-2)*(sqr(n)-3*n+12) / 24));
Класс good.gif

RathaR, основная идея моего решения была в том, чтобы смоделировать процесс проведения диагоналей.
Занумеруем вершины многоугольника по порядку (важно, что по порядку). Теперь будем проводить диагонали. Каждая диагональ добавляет к существующей разбивке столько частей, на сколько её делят в настоящий момент (то есть сразу после проведения) другие диагонали. Например, в самом начале первая диагональ добавляет 1 часть к уже существующей 1 части (целый багатокутник), тем самым делая полное число частей равным 2. Вторая диагональ (например, в квадрате), имеющая 1 пересечение (то есть поделенная сама на 2 части) прибавляет 2 части, доводя полное число частей до 4. Можно организовать "проведение диагоналей" с подсчетом точек пересечения. Делаем так..

Проводим диагональ от вершины с номером А к вершине с номером В. Она может пересечь только те диагонали, одна вершина которых (назовем одну из них XY) лежит между А и В (то есть A<X<B), а вторая - вне этой дуги (Y<A or B<Y). Затем, чтобы получить число частей, нужно число пересечений увеличить на 1. Вот и вся идея. Еще раз обращаю внимание, что пересекать нужно только с уже проведенными диагоналями. Выяснить, какие диагонали уже проведены можно, используя порядок проведения. Сначала у меня была идея запоминать это в матрице NxN, но такая матрица слишком велика (по крайней мере для ТР), так что я оставил эту идею (оно и к лучшему)).

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

А как вывести формулу, приведенную volvo, лучше спросить у него самого smile.gif.

Ну что, RathaR - ты все еще считаешь эту задачу легкой? smile.gif

Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


Цитата(Lapp @ 8.07.2009 4:27) *

Ну что, RathaR - ты все еще считаешь эту задачу легкой? smile.gif

Я - уже нет mega_chok.gif , а вот организаторы олимпиады наверное всёже считают, раз дают за неё 15 баллов из 400... чем собственно и вводят в заблуждение учасников smile.gif
Еще раз спасибо за объяснение, сам бы вжизни не справился good.gif


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(RathaR @ 8.07.2009 6:55) *
организаторы олимпиады наверное всёже считают, раз дают за неё 15 баллов из 400...
Возможно, они считают эту формулу известной. Но это мне в высшей степени странно.. Я погуглил немного (правда, совсем немного), но не нашел. Интересно, какой способ использовал volvo. Может, все и не так страшно, как я это представил smile.gif.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

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

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


Цитата(Lapp @ 8.07.2009 6:22) *

Возможно, они считают эту формулу известной. Но это мне в высшей степени странно.. Я погуглил немного (правда, совсем немного), но не нашел. Интересно, какой способ использовал volvo. Может, все и не так страшно, как я это представил smile.gif.

Будь я 9 класником который впервые приехал на олимпиаду, и учитывая то, что задания у всех класов одинаковы, я бы с самого начала был бы настроен на то, чтоб попробовать решить первые 2 тоесть самые лёгкие задачи, и убить всё время именно на них, дабы получить хоть какието балы, а не плодить недоделлки по сложным задачам, а увидав бы такие задачи по 15 балов, я бы и дальше смотреть не стал, а розвернулся бы и просто ушол, при том что на математике показываю хорошые показатели, а геометрия мой конёк smile.gif
То как это трактовать? Как желание организаторов повысить уровень знаний молодёжи, или просто решили забить на 9, да и на 10 класс тоже, мол пусть учатся а в 11 класе будут готовы ко всему...


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
RathaR   Диагонали многоугольника   5.07.2009 20:40
Krjuger   Товарищ,у вас явно не совсем корректное задание. …   5.07.2009 22:07
RathaR   Вообще то она линейная....число элементов равно N…   5.07.2009 22:47
volvo   Это чем же, интересно? Добавлено через 40 сек. О…   5.07.2009 22:13
Krjuger   Видно,Vlovo,мы условие по разному поняли.Ладно вид…   5.07.2009 23:26
Lapp   Задача в числе простых но в голову ничего не лезет…   6.07.2009 14:39
RathaR   RathaR, давай не будем записывать задачу в …   6.07.2009 15:06
Lapp   Назвая её простой я не имел в виду то что она личн…   6.07.2009 15:17
RathaR   ... ответ будет для четырехугольника - 4? Да, …   6.07.2009 15:41
Lapp   Условие на украинском языке...Ничего, я попробую р…   6.07.2009 16:50
RathaR   Задача 1. Діагоналі. Умова. У випуклому багатокутн…   6.07.2009 17:12
Гость   Вот: var n,i,j,p: integer; begin repeat W…   7.07.2009 9:06
RathaR   Вот: готовый код это канешно очень хорошо, и за …   7.07.2009 12:12
Lapp   но только целью моей было скорее понять её, чем по…   7.07.2009 12:22
RathaR   А что именно удивило: что цикл - или что мало цик…   7.07.2009 12:31
Lapp   Под маской гостя скрывался (ненарочно) я. Извиняю…   7.07.2009 9:08
Lapp   Пока писал и рисовал объяснение, у меня появилось …   7.07.2009 13:08
RathaR   Пока писал и рисовал объяснение, у меня появилось…   7.07.2009 13:27
volvo   :yes2: WriteLn(trunc((n-1)*(n-2)*(sqr(n)-3*n+12)…   7.07.2009 13:58
RathaR   Про тип Comp (который может хранить значения от -…   7.07.2009 21:06
Lapp   :yes2: [code=pas]WriteLn(trunc((n-1)*(n-2)*(sqr(…   8.07.2009 8:27
RathaR   Ну что, RathaR - ты все еще считаешь эту задачу л…   8.07.2009 9:55
Lapp   организаторы олимпиады наверное всёже считают, раз…   8.07.2009 10:22
RathaR   Возможно, они считают эту формулу известной. Но …   8.07.2009 10:34
volvo   Использовалась известная формула (известная мне по…   8.07.2009 14:56
Lapp   это даже лучше, лишний раз пошевелить извилинами и…   8.07.2009 15:16
s13   а что если добавим условие что мы вводим и количес…   12.10.2013 20:25


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

 





- Текстовая версия 29.04.2024 19:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name