A+B
A+B — в спортивном программировании классическая пробная задача, использующаяся для ознакомления участников с тестирующей системой.[1]
На соревнованиях по программированию организаторы, как правило, вообще не смотрят в исходный код программы — специальная тестирующая система компилирует решение и запускает его на заранее подготовленном наборе тестов. Если решение даёт успешные результаты на входных данных всех тестов, задача считается решённой участником. При этом участник должен жёстко соблюдать правила олимпиады — вводить и выводить информацию в нужном формате, и не подключать к программе запрещённые модули (например, conio.h
).
Длительность олимпиады, как правило, сильно ограничена, и непосредственно после её начала у участников уже нет времени для проверки возможностей тестирующей системы. К началу соревнований участникам необходимо уже уметь легко управляться с тестирующей системой и её интерфейсом. Чтобы ознакомиться с системой, перед основным туром олимпиады обычно проводят пробный тур, на котором участникам предлагают лёгкую задачу, алгоритм решения которой тривиален. Задачей пробного тура чаще всего и бывает задача «A+B».
Разумеется, на пробном туре может быть и любая другая несложная задача. Иногда делают несколько задач, чтобы участники могли попробовать ввод различных типов данных. Например, в одной задаче, как и в «A+B», нужно вводить числа, а в другой — строки. Сложность задач пробного тура также может варьироваться от таких простых, как «A+B», до более сложных, хотя слишком сложные задачи на пробном туре по понятным причинам давать не принято.
«A+B» — одна из немногих задач олимпиадного программирования, традиционно не имеющая сюжета.
Условие задачи
[править | править код]Даны 2 целых числа: A и B. Требуется вычислить их сумму.
Входные данные
[править | править код]Во входном потоке в единственной строке через пробел записаны два целых числа: A и B.
Выходные данные
[править | править код]В выходной поток следует записать единственное целое число — сумму чисел A и B.
Пример
[править | править код]Исходные данные | Результат |
---|---|
2 2 | 4 |
3 2 | 5 |
Решение задачи
[править | править код]Алгоритм решения
[править | править код]Алгоритм решения задачи «A+B» представляет собой простую последовательность действий, реализующуюся непосредственно за счёт возможностей ввода-вывода того или иного языка программирования. Можно оформить алгоритм следующим образом:
- Считать A
- Считать B
- Сложить A и B
- Вывести полученную сумму
Легко видеть, что сложность алгоритма T(A, B) ~ O(1). На любых данных рабочая логика программы выполняется за небольшое конечное число тактов процессора.
Решения на различных языках программирования
[править | править код]На C
[править | править код]#include <stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
return 0;
}
На Pascal
[править | править код]program aplusb;
var a, b : longint;
begin
Read(a, b);
WriteLn(a + b);
end.
На PascalABC.Net
[править | править код]##
var (a,b):=ReadInteger2;
println(a+b);
На Java
[править | править код]import java.util.Scanner;
public class AplusB {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(a + b);
}
}
На C++
[править | править код]#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
На C#
[править | править код]using System;
class Program
{
static void Main()
{
string[] input = Console.ReadLine().Split(' ');
Console.WriteLine(int.Parse(input[0]) + int.Parse(input[1]));
}
}
На Python 3
[править | править код]a, b = input().split()
print(int(a) + int(b))
На Perl
[править | править код]($a, $b) = split /\s/, <>;
print $a + $b . "\n";
На Common Lisp
[править | править код](let ((a (read))
(b (read))
(format t "~a~%" (+ a b)))
На Ruby
[править | править код]puts gets.split.map(&:to_i).inject(:+)
На Haskell
[править | править код]main = print . sum . map read . words =<< getLine
На AWK
[править | править код]{print $1+$2}
На Go
[править | править код]package main
import "fmt"
func main() {
var a, b int
fmt.Scan(&a, &b)
fmt.Print(a + b)
}
На Kotlin
[править | править код]fun main() {
val (a, b) = readln().split(" ").map { it.toInt() }
println(a + b)
}
Задачи A+B на различных сайтах
[править | править код]- A+B Problem на Тимусе
- A+B на Sort Me
- A+B на сервере Саратовского государственного университета
- A+B на сервере Самарского государственного университета
- A+B в Школе программиста
- Сумма двух целых чисел Архивная копия от 8 июня 2015 на Wayback Machine на сервере Физтеха
Примечания
[править | править код]- ↑ Введение в олимпиадное программирование Архивная копия от 8 декабря 2008 на Wayback Machine в Школе программиста