A+B

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 24. února 2021; kontroly vyžadují 3 úpravy .

A+B je klasický zkušební problém  ve sportovním programování , který se používá k seznámení účastníků s testovacím systémem . [jeden]

Na programátorských soutěžích pořadatelé zpravidla vůbec nehledí na zdrojový kód programu - speciální testovací systém sestaví řešení a spustí jej na předem připravené sadě testů . Pokud řešení dává úspěšné výsledky na vstupních datech všech testů, je problém účastníkem považován za vyřešený. Účastník zároveň musí striktně dodržovat pravidla olympiády – zadávat a vydávat informace v požadovaném formátu a nepřipojovat do programu zakázané moduly (například conio.h).

Doba trvání olympiády je zpravidla velmi omezená a hned po jejím zahájení již účastníci nemají čas otestovat možnosti testovacího systému. Na začátku soutěže již musí být účastníci schopni snadno ovládat testovací systém a jeho rozhraní . Pro seznámení se systémem se před hlavním kolem olympiády obvykle koná zkušební kolo, ve kterém je účastníkům nabídnuta snadná úloha, jejíž algoritmus je triviální. Úkolem zkušebního kola je nejčastěji úloha „A+B“.

Ve zkušebním kole může být samozřejmě jakýkoli jiný jednoduchý úkol. Někdy se provádí více úkolů, aby si účastníci mohli vyzkoušet různé typy vstupů . Například v jednom úkolu, jako v "A + B", musíte zadat čísla , a ve druhém - řetězce . Obtížnost problémů zkušebního kola se také může lišit od jednoduchých jako "A + B" až po ty obtížnější, i když není zvykem zadávat příliš obtížné úkoly ve zkušebním kole ze zřejmých důvodů.

"A + B" je jeden z mála problémů programátorské soutěže , který tradičně nemá zápletku.

Stav problému

Jsou dána 2 celá čísla : A a B. Je nutné vypočítat jejich součet .

Vstupní data

Vstupní proud obsahuje dvě celá čísla oddělená mezerou na jednom řádku: A a B.

Otisk

Zapište do výstupního proudu jediné celé číslo – součet čísel A a B.

Příklad

Počáteční údaje Výsledek
2 2 čtyři
3 2 5

Řešení problému

Algoritmus řešení

Algoritmus pro řešení problému „A + B“ je jednoduchý sled akcí, který je implementován přímo díky vstupně-výstupním schopnostem konkrétního programovacího jazyka . Algoritmus můžete uspořádat následovně:

  1. hrabě A
  2. hrabě B
  3. Přidejte A a B
  4. Vybrat přijatou částku

Je snadné vidět, že složitost algoritmu je T(A, B) ~ O(1). Na libovolných datech je pracovní logika programu vykonávána v malém konečném počtu cyklů procesoru .

Řešení v různých programovacích jazycích

V C

#include <stdio.h> int main () { int a , b ; scanf ( "%d%d" , &a & b ) ; printf ( "%d \n " , a + b ); }

V Pascalu

program aplusb ; var a , b : longint ; začít Číst ( a , b ) ; WriteLn ( a + b ) ; konec .

V Javě

import java.util.Scanner ; public class AplusB { public static void main ( String [] args ) { Scanner scanner = new Scanner ( System . in ); int a = skener . nextInt (); int b = skener . nextInt (); Systém . ven . println ( a + b ); } }

V C++

#include <iostream> pomocí jmenného prostoru std ; int main () { int a , b ; cin >> a >> b ; cout << a + b ; návrat 0 ; }

V C#

pomocí System ; class Program { static void Main () { string [] input = Console . readline (). Rozdělit ( ' ); Konzole . WriteLine ( int . Parse ( vstup [ 0 ]) + int . Parse ( vstup [ 1 ])); } }

V Pythonu 3

a , b = mapa ( int , vstup () . rozdělení ()) tisk ( a + b )

Perl _

( $a , $b ) = rozdělení /\s/ , <> ; tisk $a + $b . "\n" ;

In Common Lisp

( let (( a ( číst )) ( b ( číst )) ( formát t "~a~%" ( + a b )))

Na Ruby

klade dostane . rozdělit . mapa ( & :to_i ) . injekci ( :+ )

V Haskellu

hlavní = tisknout . součet . mapa přečtená . slova =<< getLine

Na AWK

{ tisk $ 1 + $ 2 }

On Go

hlavní balíček importovat "fmt" func main () { var a , b int fmt . Skenovat ( &a , & b ) fmt . tisknout ( a + b ) }

Na Kotlinu

fun main () { val ( a , b ) = readln (). rozdělit ( " " ). mapa { to . toInt () } println ( a + b ) }

Úkoly A+B na různých místech

Poznámky

  1. Úvod do programování olympiád Archivováno 8. prosince 2008 na Wayback Machine na Programmer's School