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» представляет собой простую последовательность действий, реализующуюся непосредственно за счёт возможностей ввода-вывода того или иного языка программирования. Можно оформить алгоритм следующим образом:

  1. Считать A
  2. Считать B
  3. Сложить A и B
  4. Вывести полученную сумму

Легко видеть, что сложность алгоритма T(A, B) ~ O(1). На любых данных рабочая логика программы выполняется за небольшое конечное число тактов процессора.

Решения на различных языках программирования[править | править код]

На C[править | править код]

#include <stdio.h>

void main()
{
    int a, b;

    scanf("%d%d", &a, &b);
    printf("%d\n", a + b);
}

На Pascal[править | править код]

program aplusb;
var a, b : longint;
begin
    Read(a, b);
    WriteLn(a + b);
end.

На 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);
	}

}

На С++[править | править код]

#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 = map(int, input().split(' '))
print(a + 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}

Задачи A+B на различных сайтах[править | править код]

Примечания[править | править код]

  1. Введение в олимпиадное программирование в Школе программиста