A+B

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 24 februarie 2021; verificările necesită 3 modificări .

A+B este o problemă clasică de încercare  în programarea sportivă , folosită pentru a familiariza participanții cu un sistem de testare . [unu]

La competițiile de programare , organizatorii, de regulă, nu se uită deloc la codul sursă al programului - un sistem special de testare compilează soluția și o rulează pe un set de teste pregătit în prealabil . Dacă soluția dă rezultate de succes la datele de intrare ale tuturor testelor, problema este considerată rezolvată de către participant. În același timp, participantul trebuie să respecte cu strictețe regulile olimpiadei - să introducă și să scoată informații în formatul necesar și să nu conecteze modulele interzise la program (de exemplu, conio.h).

Durata olimpiadei, de regulă, este foarte limitată și, imediat după începerea acesteia, participanții nu mai au timp să testeze capacitățile sistemului de testare. Până la începutul competiției, participanții trebuie să fie deja capabili să gestioneze cu ușurință sistemul de testare și interfața acestuia . Pentru a face cunoștință cu sistemul, înainte de runda principală a olimpiadei, se organizează de obicei o rundă de probă, în care participanților li se oferă o sarcină ușoară, algoritmul de rezolvare care este banal. Sarcina rundei de probă este cel mai adesea sarcina „A+B”.

Desigur, orice altă sarcină simplă poate fi în runda de probă. Uneori sunt efectuate mai multe sarcini, astfel încât participanții să poată încerca diferite tipuri de introducere . De exemplu, într-o sarcină, ca în „A + B”, trebuie să introduceți numere , iar în celelalte - șiruri . Dificultatea problemelor din runda de probă poate varia, de asemenea, de la simple ca „A + B” la altele mai dificile, deși nu este obișnuit să se acorde sarcini prea dificile în runda de probă din motive evidente.

„A+B” este una dintre puținele probleme de concurență de programare care în mod tradițional nu are o intriga.

Starea problemei

Având în vedere 2 numere întregi : A și B. Este necesar să se calculeze suma lor .

Date de intrare

Fluxul de intrare conține două numere întregi separate prin spațiu într-o singură linie: A și B.

Amprentă

Scrieți în fluxul de ieșire un singur întreg - suma numerelor A și B.

Exemplu

Datele inițiale Rezultat
2 2 patru
3 2 5

Rezolvarea problemei

Algoritm de soluție

Algoritmul pentru rezolvarea problemei „A + B” este o secvență simplă de acțiuni care este implementată direct datorită capacităților de intrare-ieșire ale unui anumit limbaj de programare . Puteți aranja algoritmul după cum urmează:

  1. Contele A
  2. Contele B
  3. Adăugați A și B
  4. Retrageți suma primită

Este ușor de observat că complexitatea algoritmului este T(A, B) ~ O(1). Pe orice date, logica de lucru a programului este executată într-un număr finit mic de cicluri de procesor .

Soluții în diverse limbaje de programare

În C

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

În Pascal

program aplusb ; var a , b : longint ; începe Citiți ( a , b ) ; ScrieLn ( a + b ) ; sfârşitul .

În Java

import java.util.Scanner ; clasa publica AplusB { public static void main ( String [] args ) { Scanner scanner = scaner nou ( System . in ); int a = scaner . nextInt (); int b = scaner . nextInt (); Sistem . afară . println ( a + b ); } }

În C++

#include <iostream> folosind namespace std ; int main () { int a , b ; cin >> a >> b ; cout << a + b ; returnează 0 ; }

În C#

folosind System ; class Program { static void Main () { string [] input = Console . readline (). Split ( ' ' ); Consola . WriteLine ( int . Parse ( input [ 0 ]) + int . Parse ( input [ 1 ])); } }

Pe Python 3

a , b = map ( int , input () . split ()) print ( a + b )

Perl _

( $a , $b ) = split /\s/ , <> ; print $a + $b . „\n” ;

In Common Lisp

( fie (( a ( citește )) ( b ( citește )) ( format t „~a~%” ( + a b )))

Pe Ruby

pune devine . despicat . harta ( & :to_i ) . injecteaza ( :+ )

În Haskell

main = print . suma . harta citită . cuvinte =<< getLine

Pe AWK

{ imprimați 1 USD + 2 USD }

On Go

pachet principal import "fmt" func main () { var a , b int fmt . Scanează ( &a , & b ) fmt . imprimați ( a + b ) }

Pe Kotlin

fun main () { val ( a , b ) = readln (). împărțit ( " " ). harta { it . toInt () } println ( a + b ) }

Sarcini A+B pe diverse site-uri

Note

  1. Introducere în programarea olimpiadelor Arhivat la 8 decembrie 2008 la Wayback Machine de la Școala de programatori