Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2015, 22:53   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Комбинации колон, (готовлюсь к icpc)

Ребят, у меня три вопроса:
1) как можно проверить число 10^9?
2) не очень понял суть задачи
3) и что значит время тестирования 3(сек./тест)?

Вообще, кто-нибудь там участвовал?) Какие впечатления?
Изображения
Тип файла: jpg 2015-09-21_20-51-14.jpg (33.4 Кб, 124 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 21.09.2015, 23:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
как можно проверить число 10^9?
В смысле как? Взять и проверить. 10^9 = 1000000000. Ну или какая-нибудь стандартная функция power языка если не охота столько 0 писать самому.

Цитата:
и что значит время тестирования 3(сек./тест)?
Ну а что это может значить?
Программе разрешено работать не более 3 сек в каждом тесте.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.09.2015, 00:57   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

так же по мимо самой задачи меня интересует вопрос быстродействия....где вообще можно прочитать более подробно об оптимизации кода? Притом, может быть, кто-то собрал все данные воедино? МОжет есть какая-нибудь статья,..., а то в интернете устал лазить по разным ресурсам, например на одном сайте чисто только о развертке цикла говориться

1) тернарный оператор или if else? (при условии того, что обо можно использовать, случаи, в которых тернарный оператор применить нельзя - не рассматриваю)

2) поток iostream или Printf, scanf отработает быстрее?

3) что лучше: цикл for, while или рекурсия?

4) using namespace std или using std::cin; using std::cout? (чтоб была привязка только к cin и cout, не более, поможет ли в быстродействии?)

5) i=i+1, i+=1? (пример других операторов *=, ну и т.д.)
from dark to light)

Последний раз редактировалось Алексей_2012; 22.09.2015 в 01:39.
Алексей_2012 вне форума Ответить с цитированием
Старый 22.09.2015, 02:21   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Попробовал наивный алгоритм на informatics.mccme.ru - 7 тестов из 28 прошли (остальные не уложились в односекундный лимит). Все приведенные 5 примеров (ну кроме 3го), по моему мнению, не окажут существенного влияния на решение олимпиадных задач. Гораздо важнее сложность примененного алгоритма.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.09.2015, 07:41   #5
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

На кибере видел алгоритм решения подобной задачи. Правда там не оговаривались ограничения по памяти. Идея - в массиве сохраняется количество делителей, а потом по массиву производится поиск.

Сам алгоритм был примерно таким.
1. Создаём массив a[1..10^9] of longint - тип можно подобрать по результатам домашних испытаний
2. В цикле i перебираем все числа от 1 до 10^9 (или оценить этот предел).
2.1 В цикле j от i до 10^9 шагом i увеличиваем на 1 a[j]
3. В цикле ищем такое a[i], чтобы оно было ["больше или" - Sorry, глупость сморозил, потому и исправил] равно n [и было как можно ближе к n - опять]. Ответом будет i.

К алгоритму можно добавить оптимизации, например, если при заполнении массива a[i]=n, то ответ. Или совместить заполнение и поиск, т.к. элементы массива с индексами ниже i не изменяются.

Последний раз редактировалось FPaul; 22.09.2015 в 11:04.
FPaul вне форума Ответить с цитированием
Старый 22.09.2015, 08:33   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
где вообще можно прочитать более подробно об оптимизации кода?
Не заниматься микрооптимизациями, а брать профайлер и смотреть что занимает много времени и т.п., думать как можно улучшить этот кусок, переписывать его.

А почитать про "оптимизации"/"хороший код" и т.п. можно Code complete от S. McConnel, не зависимо от ЯП.

Но тут задачи вообще не про это наверно, а про алгоритмы, структуры данных. Так что надо приступать к изучению какого-нибудь стандартного курса/книги по алгоритмам (ну там где всякие сортировки, алгоритмы для графов/деревьев, комбинаторика, жадные алгоритмы, разделяй и властвуй, динамическое программирование и все такое) и структурам данных (список, стек/очередь, set, map, графы, деревья и т.п.), понимать какая где сложность и когда что лучше. Если что на всяких Coursera'х, хекслетах, лекториумах полно курсов по этому.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
готовлюсь к олимпиаде по информатике salauat Паскаль, Turbo Pascal, PascalABC.NET 25 01.12.2013 21:32
Поздравляю братьев СЛАВЯН с победой на ACM-ICPC 2012 Noor Свободное общение 7 20.05.2012 17:54
Гиа 2012 готовлюсь XYLIGAN72 Помощь студентам 10 14.01.2012 15:37
Запрещённые комбинации LuckyOwner Microsoft Office Excel 7 25.07.2010 10:10