Осенний конкурс 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 не подходит. Нужно взять тип для большего диапазона значений.