Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Конкурсы и Олимпиады по Машинному программированию (КОМП)


Информационный Канал Subscribe.Ru

Осенний конкурс 2005 года продолжается. Сегодня лидеры преодолели уровень 5. Но сегодня вернёмся к уровню 2, который многие успешно преодолели не самым лучшим образом.

На втором уровне нужно было подсчитать количество палиндромов в строке из одного единственного символа. Все прошедшие этот уровень заметили, что нужно просто подсчитать количество всех подстрок в этой строке. Сколько же их? Подстрок длинной в 1 символ --- N, подстрок длины 2 --- N-1 и т.д., строк длиной N --- 1. Получается что всего подстрок N+(N-1)+...+3+2+1.

Многие так циклом и считали. Но можно вспомнить формулу для суммы арифметической прогрессии и получится простая формула N*(N-1)/2.

Так просто решалась эта задача. Правда кое-кто не очень подумал, когда программировал формул и для её значения взял тип integer. Посмотрим. Максимальная длина строки 10000, подстрок в ней 10000*(10000-1)/2 = 49995000. Такое значение для типа integer не подходит. Нужно взять тип для большего диапазона значений.



Автор: Пупышев Вячеслав Викторович   
e-mail: pvv@uni.udm.ru   
Web: http://colymp.da.ru   

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.comp
Архив рассылки
Отписаться
Вспомнить пароль

В избранное