Higher
|
|
1 | |
прекалк18.06.2011, 15:37. Показов 7606. Ответов 19
Доброго времени суток
Знаю, что есть задачи, которые можно решить только с помощью этого прекалка. Но что это такое - найти не могу =( Просьба дать линки на какую-нибудь литературу по этой теме, либо объяснить на примере. Что он делает, примерно представляю - на олимпиадные задачи отводится определенное время, обычно 1 секунда. Иногда этого недостаточно, и в таких случаях, как я понял, пишут прекалк, т.е. на этапе компиляции вычисляют все возможные значения и затем тупо находят среди них нужный. А вот как это делают - без понятия, и нагуглить ничего толкового не получается.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
18.06.2011, 16:00 | 2 |
Вместо а = 5 + 7 пишешь а = 12. Это элементарный вариант прекалка.)
А вообще, скорее всего имеется ввиду замена "длительных" функций на предвычесленное значение. Например, создаётся таблица синусов угла и вместо вызова функции sin используется индексный доступ к массиву.
1
|
Higher
|
||||||
18.06.2011, 16:06 [ТС] | 3 | |||||
Хм... А как ее сделать на этапе компиляции
Насколько я понял, прекалком вы называете например такой код
Или это невозможно и я ошибаюсь?
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
18.06.2011, 16:15 | 4 | |||||
Не правильно понял.
Например, массив синусов, о котором я сказал выше:
Сомневаюсь, что ты сможешь вычислить !100 не используя длинную арифметику.)
1
|
Каратель
|
|
18.06.2011, 16:22 | 8 |
примерчик в 3-м посте)
факториал в с++
1
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
18.06.2011, 16:37 | 10 |
Чем тебя не устраивает прекалк в виде массива набитого ручками с калькулятором? Где в массиве ООП?
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
18.06.2011, 16:44 | 12 | |||||
diagon, а в факториале ООП причём? Шаблоны - обобщенное, а не объектно-ориентированное программирование.
Вот вам вариант без классов (если именно они вас смущают, хотя он абсолютно ничем не отличается от классов с публичными членами):
1
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
18.06.2011, 16:44 | 13 |
На этапе компиляции вычисления сильно ограничены. Я не уверен, что даблы можно считать (скорее всего нельзя). С интами практически любые манипуляции делать можно, но благодаря шаблонам в основном.
1
|
Higher
|
|
18.06.2011, 16:47 [ТС] | 14 |
Шаблоны в общих чертах знаю, а классы даже не начинал(там класс Factorial используется). Ну принципы ООП немного из java знаю, но оно там намного проще, чем в с++.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
18.06.2011, 16:49 | 15 |
о_О. Как принципы ООП в одном языке могут быть проще, чем в другом? Само ООП от языка не зависит ни коим образом. А Java и C++ в этом плане практически близнецы.
0
|
Higher
|
|
18.06.2011, 16:52 [ТС] | 16 |
Я про само ООП(тавтология получилась, ну да ладно)
Например, в java нету виртуальных функций, нету указателей и еще много всего, чего я не знаю=) Просто в книге по java, которую я читаю, идет сравнение с++ с java, очень много возможностей с++ там просто вырезано.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
18.06.2011, 16:52 | 17 |
Точно помню, что задавался этим вопросом, искал, нашёл ответ. Но т.к. это было просто любопытство, то уже не помню ответа.)
Есть подозрение, что нельзя.)
1
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
18.06.2011, 16:54 | 18 |
diagon, виртуальные функции в Java есть, просто они там все виртуальные по умолчанию. Указатели с ООП ничего общего не имеют.
1
|
Higher
|
|
18.06.2011, 17:04 [ТС] | 19 |
Не по теме: Такое ощущение, что меня переманивают на темную сторону с++:D Ок, спасибо, поковыряюсь с шаблонами.
0
|
silent_1991
|
18.06.2011, 20:16
прекалк
#20
|
Не по теме: diagon, да нет, зачем своими руками клепать конкурентов? :D
0
|