В этом параграфе вы разберёте простейшую задачу «Сумма двух чисел» и познакомитесь с тем, как она реализуется на C++, Java и Python. Это хороший первый шаг: вы увидите, как выглядит рабочее решение и как оформлять код, пригодный для тестирования и анализа.

Ключевые вопросы параграфа

  • Как выглядит корректное решение самой простой задачи на разных языках программирования?
  • Что важно учитывать при оформлении и тестировании даже самых базовых программ?

Разбор примера

Рассмотрим совсем простую задачу.

  • Входные данные: Целые числа и на одной строке (разделённые пробелом).
  • Выходные данные: Сумма и .
  • Ограничения: .
  • Пример

Ввод

Вывод

9 7

16

  • Ограничение по времени (с): 1 секунда
  • Ограничение по памяти: 512 Mb.

Поскольку задача решается в одно действие, шаг Спроектировать алгоритм мы пропустим и перейдём сразу к псевдокоду.

1SumOfTwoDigits(a, b):
2    return a + b

Так как псевдокод не уточняет ввод и , ниже мы приводим решения для языков C++, Java и Python3, а также рекомендации по компиляции и реализации.

Вы можете скопировать и вставить код в файл, скомпилировать, запустить и протестировать с разными данными, а затем сдать исходный файл в систему проверки.

Разумеется, мы рассчитываем, что вы знакомы с основами одного из языков программирования, который используется в нашей системе тестирования: C++, Python3, Java.

C++

1#include <iostream>
2
3int sum_of_digits(int first, int second) {
4    return first + second;
5}
6
7int main() {
8    int a = 0;
9    int b = 0;
10    std::cin >> a;
11    std::cin >> b;
12    std::cout << sum_of_digits(a, b);
13    return 0;
14}

Java

1import java.util.Scanner;
2
3class SumOfTwoDigits {
4    static int sumOfTwoDigits(int first_digit, int second_digit) {
5        return first_digit + second_digit;
6    }
7
8    public static void main(String[] args) {
9        Scanner s = new Scanner(System.in);
10        int a = s.nextInt();
11        int b = s.nextInt();
12        System.out.println(sumOfTwoDigits(a, b));
13    }
14}

Python3

1def sum_of_digits(first_digit, second_digit):
2    return first_digit + second_digit
3
4if __name__ == '__main__':
5    a, b = map(int, input().split())
6    print(sum_of_digits(a, b))

Ваша цель — реализовать алгоритм, который даёт верный результат с ограничениями по времени и памяти и при любом вводе. Нет необходимости проверять, что входные данные соответствуют ограничениям, — например, в задаче Сумма двух чисел вам не нужно следить за тем, чтобы целые числа и действительно были однозначными (это гарантировано).

Что дальше

Теперь вы разобрались, как выглядит самая простая задача и как оформить корректное решение на разных языках программирования. Это важный шаг: вы научились уверенно работать с вводом, выводом и базовой логикой программы.

Далее — задача посложнее. Она потребует не только корректной реализации, но и оценки эффективности. Вы увидите, почему наивный алгоритм не всегда подходит, и научитесь искать более быстрые решения.

А пока вы не ушли дальше — закрепите материал на практике:

  • Отметьте, что урок прочитан, при помощи кнопки ниже.
  • Пройдите мини-квиз, чтобы проверить, насколько хорошо вы усвоили тему.
  • Перейдите к задачам этого параграфа и потренируйтесь.
  • Перед этим — загляните в короткий гайд о том, как работает система проверки.

Хотите обсудить, задать вопрос или не понимаете, почему код не работает? Мы всё предусмотрели — вступайте в сообщество Хендбука! Там студенты помогают друг другу разобраться.

Ключевые выводы параграфа

  • Даже у простой задачи есть структура: ввод, обработка, вывод.
  • Важно уметь оформить решение понятно и корректно, чтобы можно было уверенно работать с ним, проверять и развивать его дальше.
Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф3.1. Практические задания с автоматической проверкой

Сформулируем чеклист решения алгоритмической задачи: от разбора условия до анализа вердикта системы проверки.

Следующий параграф3.3. Задача «Максимальное произведение»

Без ошибок практически невозможно написать программу. В этом параграфе мы рассмотрим подробнее, как их искать. А заодно поговорим о том, как подбирать корректные входные данные, чтобы проверить работоспособность алгоритма во всех сценариях.