Посмотрите данные темы:Длинная арифметика
Динамическое программирование
Теория графов
Рекурсия, перебор
Сортировка и последовательности
Комбинаторика
Простая математика
Геометрия
Целочисленная арифметика
Математическое моделирование
Жадный алгоритм
Структуры данных
Двумерные массивы
Почитайте о них, разберите каждую. Месяц - слишком мало для подготовки, но если у Вас школьная олимпиада, то еще ничего.
Архив задач и тренировка здесь:acmp.ruacm.timus.ruCodeforces
Это
очень полезные ресурсы (системы проверки), в которые входят очень интересные и трудные задачи, как раз предназначенные для олимпиадного программирования.
Ознакомьтесь здесь:
Олимпиадное программирование для новичков
Набор языков программирования в каждой системе разный. Вот некоторые из них:
Набор яп для тимусаДля acmp.ru
Но для начала почитайте и разберите эти ресурсы/книги про алгоритмы:
algolist.manual.ruКормен Т., Лейзерсон Ч., Ривест Р., Штайн K. - Алг...
Ну и конечно, подтяните математику. Без математики далеко не уйдете.
Ответ на Ваш вопрос: для длинной арифметики подошел бы Java.