Восемь задач, которые нужно разбить на функции. Прежде чем писать код, выпишите,
какие помощники вам нужны и что каждый принимает и возвращает, — тогда main
почти пишется сама.
- «Prime Predicate»: до 2·10⁴ чисел до 10⁹, некоторые отрицательные. Цикла
d * d <= nхватает по времени, а перебора всех d до n — нет. - «Проверка простоты НОД»: два помощника, и один вызов внутри другого —
isPrime(gcd(a, b)). Помните, что 1 — не простое число. - «Простые с суммой цифр, делящейся на 3»: если ни одно число не подходит,
выведите только строку
0. - «Совершенное, избыточное или недостаточное»: собственные делители — это все делители, кроме самого n. Складывайте их парами и будьте внимательны, когда d и n / d — одно и то же число. У числа 1 собственных делителей нет.
- «Самый частый символ»: считайте буквы в массиве из 26 элементов. При равенстве
побеждает меньшая буква, поэтому идите от
aкzи заменяйте лучшую, только когда количество строго больше. - «Палиндром 2» требует двух вещей сразу: одна из двух строк — палиндром, и одна
из двух склеек, s + t или t + s, — тоже палиндром. Одна
isPalindrome, четыре вызова. - «Operation Dispatcher»: одна функция, которая получает команду как
stringи два числа и возвращает результат. Произведения помещаются вlong long. - «Rotate Matrix»: таблица бывает 500 × 500, это четверть миллиона чисел — не забудьте строки быстрого ввода-вывода. Сначала разберитесь на примерах 2 × 2 и 3 × 3, откуда берётся элемент строки i и столбца j ответа. При n = 0 ничего не печатайте.