3.2. Задача «Сумма двух чисел»
Авторы: Алексей Толстиков, Александр Куликов
В этой статье вы разберёте простейшую задачу «Сумма двух чисел» и познакомитесь с тем, как она реализуется на C++, Java и Python. Это хороший первый шаг: вы увидите, как выглядит рабочее решение и как оформлять код, пригодный для тестирования и анализа.
Ключевые вопросы статьи
- Как выглядит корректное решение самой простой задачи на разных языках программирования?
- Что важно учитывать при оформлении и тестировании даже самых базовых программ?
Разбор примера
Рассмотрим совсем простую задачу.
- Входные данные: Целые числа и на одной строке (разделённые пробелом).
- Выходные данные: Сумма и .
- Ограничения: .
- Пример
|
Ввод |
Вывод |
|
9 7 |
16 |
- Ограничение по времени (с): 1 секунда
- Ограничение по памяти: 512 Mb.
Поскольку задача решается в одно действие, шаг Спроектировать алгоритм мы пропустим и перейдём сразу к псевдокоду.
SumOfTwoDigits(a, b):
return a + b
Так как псевдокод не уточняет ввод и , ниже мы приводим решения для языков C++, Java и Python3, а также рекомендации по компиляции и реализации.
Вы можете скопировать и вставить код в файл, скомпилировать, запустить и протестировать с разными данными, а затем сдать исходный файл в систему проверки.
Разумеется, мы рассчитываем, что вы знакомы с основами одного из языков программирования, который используется в нашей системе тестирования: C++, Python3, Java.
C++
#include <iostream>
int sum_of_digits(int first, int second) {
return first + second;
}
int main() {
int a = 0;
int b = 0;
std::cin >> a;
std::cin >> b;
std::cout << sum_of_digits(a, b);
return 0;
}
Java
import java.util.Scanner;
class SumOfTwoDigits {
static int sumOfTwoDigits(int first_digit, int second_digit) {
return first_digit + second_digit;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
System.out.println(sumOfTwoDigits(a, b));
}
}
Python3
def sum_of_digits(first_digit, second_digit):
return first_digit + second_digit
if __name__ == '__main__':
a, b = map(int, input().split())
print(sum_of_digits(a, b))
Ваша цель — реализовать алгоритм, который даёт верный результат с ограничениями по времени и памяти и при любом вводе. Нет необходимости проверять, что входные данные соответствуют ограничениям, — например, в задаче Сумма двух чисел вам не нужно следить за тем, чтобы целые числа и действительно были однозначными (это гарантировано).
Что дальше
Теперь вы разобрались, как выглядит самая простая задача и как оформить корректное решение на разных языках программирования. Это важный шаг: вы научились уверенно работать с вводом, выводом и базовой логикой программы.
Далее — задача посложнее. Она потребует не только корректной реализации, но и оценки эффективности. Вы увидите, почему наивный алгоритм не всегда подходит, и научитесь искать более быстрые решения.
Ключевые выводы статьи
- Даже у простой задачи есть структура: ввод, обработка, вывод.
- Важно уметь оформить решение понятно и корректно, чтобы можно было уверенно работать с ним, проверять и развивать его дальше.