A+B

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 24-én felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .

Az A+B egy klasszikus próbaprobléma  a sportprogramozásban , amellyel a résztvevők megismerkedhetnek egy tesztelési rendszerrel . [egy]

A programozási versenyeken a szervezők általában egyáltalán nem nézik meg a program forráskódját - egy speciális tesztelő rendszer összeállítja a megoldást, és egy előre elkészített tesztsorozaton futtatja . Ha a megoldás az összes teszt bemeneti adatain sikeres eredményt ad, a problémát a résztvevő megoldottnak tekinti. Ugyanakkor a résztvevőnek szigorúan be kell tartania az olimpia szabályait - az információkat a kívánt formátumban kell megadnia és kiadnia, és nem szabad tiltott modulokat csatlakoztatnia a programhoz (például conio.h).

Az olimpia időtartama általában nagyon korlátozott, és közvetlenül a kezdete után a résztvevőknek már nincs idejük tesztelni a tesztelési rendszer képességeit. A verseny kezdetére a résztvevőknek már tudniuk kell könnyen kezelni a tesztelési rendszert és annak felületét . A rendszerrel való ismerkedéshez az olimpia főfordulója előtt próbakört szoktak tartani, melyben könnyű feladatot kínálnak a résztvevőknek, melynek megoldási algoritmusa triviális. A próbakör feladata leggyakrabban az „A+B” feladat.

Természetesen bármilyen más egyszerű feladat is a próbakörbe kerülhet. Néha több feladatot is el kell végezni, hogy a résztvevők különböző típusú bemeneteket próbálhassanak ki . Például az egyik feladatban, mint az "A + B" -ben, számokat kell megadnia , a másikban pedig - karakterláncokat . A próbaköri feladatok nehézsége is változhat az egyszerű "A + B"-től a nehezebbéig, bár nyilvánvaló okokból nem szokás túl nehéz feladatokat adni a próbakörön.

Az "A + B" azon kevés programozási versenyproblémák egyike, amelynek hagyományosan nincs cselekménye.

A probléma állapota

Adott 2 egész szám : A és B. Ezek összegét ki kell számítani .

Bemeneti adatok

A bemeneti adatfolyam két szóközzel elválasztott egész számot tartalmaz egyetlen sorban: A és B.

Impresszum

Írjon a kimeneti adatfolyamba egyetlen egész számot – az A és B számok összegét.

Példa

Kezdeti adatok Eredmény
2 2 négy
3 2 5

A probléma megoldása

Megoldási algoritmus

Az „A + B” probléma megoldására szolgáló algoritmus egy egyszerű műveletsor, amelyet közvetlenül egy adott programozási nyelv bemeneti-kimeneti képességei miatt hajtanak végre . Az algoritmust a következőképpen rendezheti el:

  1. gróf A
  2. Gróf B
  3. Adjuk hozzá A-t és B-t
  4. Vedd ki a kapott összeget

Könnyen belátható, hogy az algoritmus bonyolultsága T(A, B) ~ O(1). Bármilyen adaton a program működési logikája kis, véges számú processzorciklusban fut le .

Megoldások különböző programozási nyelveken

C -ben

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

Pascalban _

program aplusb ; var a , b : longint ; kezdődik Olvasás ( a , b ) ; WriteLn ( a + b ) ; vége .

Java nyelven

import java.util.Scanner ; public class AplusB { public static void main ( String [] args ) { Szkenner szkenner = new Szkenner ( System . in ); int a = szkenner . nextInt (); int b = szkenner . nextInt (); Rendszer . ki . println ( a + b ); } }

C++ nyelven

#include <iostream> névtér használata std ; int main () { int a , b ; cin >> a >> b ; cout << a + b ; return 0 ; }

C # nyelven

a rendszer használatával ; class Program { static void Main () { string [] input = Konzol . readline (). Felosztás ( ' ' ); Konzol . WriteLine ( int . Parse ( input [ 0 ]) + int . Parse ( input [ 1 ])); } }

Python 3 -on

a , b = térkép ( int , bemenet () . felosztás ()) nyomtatás ( a + b )

Perl _

( $a , $b ) = felosztás /\s/ , <> ; nyomtatás $a + $b . "\n" ;

In Common Lisp

( hagyja (( a ( olvassa )) ( b ( olvassa )) ( t "~a~%" ( + a b ) ))

On Ruby

tesz kap . oszt . térkép ( & :to_i ) . injekció ( :+ )

Haskellben _

= nyomtatás . összeg . térképet olvasni . szavak =<< getLine

AWK - n

{ nyomtatás 1 dollár + 2 dollár }

On Go

csomag import "fmt" func main () { var a , b int fmt . Szkennelés ( &a , & b ) fmt . nyomtatás ( a + b ) }

On Kotlin

fun main () { val ( a , b ) = readln (). felosztás ( " " ). térkép { it . toInt () } println ( a + b ) }

A+B feladatok különböző helyeken

Jegyzetek

  1. Bevezetés az olimpiai programozásba archiválva : 2008. december 8., a Wayback Machine -ben a Programozói Iskolában