Általános tudnivalók

Feladatleírás

Bemenet

  1. A bemenet formailag és tartalmilag is helyes.
  2. A számok mindig egész számok.
  3. Az adatokat általában sorszám azonosítja, 1-től kezdődően folyamatosan sorszámozzuk őket a bemenetbeli sorrendben, kivéve, ha feladatleírás más előírást tartalmaz.
  4. Soron belül minden adatelemet egyetlen szóköz választ el.

Kimenet

  1. Minden sort sorvég karakter zár le (az utolsót is)!
  2. Sor végén (a sorvég karakter előtt) lehet egy (felesleges) szóköz, ha a kimeneti adat szám.
  3. A kimenet csak akkor értékelhető, ha megfelel a feladatleírásban szereplő formai feltételeknek

Értékelés

Fordító (interpreter) program verziók:

Programozási nyelvi sajátosságok

Java

A megoldást tartalmazó osztály neve kötelezően „feladat”. A feladat osztályt tartalmazó fájlban több osztály is lehet.

Nem lehet package-et alkalmazni!

Ékezetes karakter (megjegyzésben is) csak UTF-8 kódolással használható.

mesterIO műveletei

A beolvasás és kiíratás gyorsabb megvalósítását teszik lehetővé az alábbi műveletek

nextInt()

A művelet a standard inputról olvas. Az aktuális pozíciótól olvasva átlépi a szóköz, sorvége, tabulátor és kocsivissza karaktareket. Ettől a pozíciótól a számjegy karaktereket olvassa be és a szám értékét adja vissza int értékként. Ha az első ilyen karakter nem számjegy, akkor a 0 értéket adja (nem keletkezik megszakítás).

nextLong()

A művelet a standard inputról olvas. Az aktuális pozíciótól olvasva átlépi a szóköz, sorvége, tabulátor és kocsivissza karaktareket. Ettől a pozíciótól a számjegy karaktereket olvassa be és a szám értékét adja vissza long értékként. Ha az első ilyen karakter nem számjegy, akkor a 0 értéket adja (nem keletkezik megszakítás).

next()

A művelet a standard inputról olvas. Az aktuális pozíciótól olvasva átlépi a szóköz, sorvége, tabulátor és kocsivissza karaktareket. Ettől a pozíciótól az első szóköz vagy sorvége vagy tabulátor vagy kocsivissza karakterig terjedő szövegrész olvassa be és adja vissza String értékként.

getLine()

A művelet a standard inputról olvas. Az aktuális pozíciótól az első sorvége karakterig teljedő szövegrészt olvassa be és adja vissza String értékként.

getChar()

A művelet a standard inputról olvassa a következő karaktert.

write(int x)

Az x egész kifejezés értékét írja ki a standard outputra.

write(long x)

Az x long típusú egész kifejezés értékét írja ki a standard outputra.

writeLn(int x)

Az x egész kifejezés értékét írja ki a standard outputra, majd ír egy sorvéget.

writeLn(long x)

Az x long típusú egész kifejezés értékét írja ki a standard outputra, majd ír egy sorvéget.

write(String s)

Az s string (kifejezés) értékét írja ki a standard outputra.

writeLn(String s)

Az s string (kifejezés) értékét írja ki a standard outputra, majd ír egy sorvéget.

close()

Végrehajt egy flush() műveletet a standard outputra, majd lezárja. A program végén (a kiíró utasítások után) végre kell hajtani egy close() utasítást!

Példa mesterIO használatára

Az alábbi példaprogram számsorozatot olvas be standard inputról és az sorozat összegét kiírja a standard outputra.

import mester.IO;
public class feladat {
    public feladat() {}
    public static void main(String[] args) throws Exception {
        IO beki = new IO();
        int N=0;
        N=beki.nextInt();
        int osszeg=0, x;
	for(int i=0;i< N ;i++){
	   x=beki.nextInt();
	   osszeg+=x;
	}
	beki.writeLn(osszeg);
        beki.close();
    }
}

Otthoni (verseny alatti) használat

Tőltsük le a mester.jar állományt innen:letöltöm

1. módszer: A mester.jar állományt teljes úttal tegyük be a CLASSPATH környezeti változóba.

2. módszer: a javac fordításkor, illetve a java futtatáskor cp paraméterként adjuk meg "mester.jar" állományt (teljes úttal).

C#

C# programok fordítása és futtatása Mono rendszerben történik.

.NET 4.5 kompatibilis teljesül, kivéve windows komponensek.

Python tanácsok

Input/output

Beolvasáshoz és kiíráshoz használd a sys modulból az stdin.readline() és stdout.write() függvényeket.

Ezek némileg gyorsabbak, mint az input() és a print().

Az stdin.readline() egy sort ad vissza string-ként, a sorvége karakterrel együtt.

Amennyiben a sor szóközzel elválasztott számokat tartalmaz, ezeket a leggyorsabban a map(int, stdin.readline().split()) paranccsal kaphatod meg. Ez egy map object-et ad vissza, ami iterable, tehát például egy for ciklussal végig lehet menni rajta (egyszer), vagy listává lehet alakítani a list(...) függvénnyel.

Ha egy sor csak két számot tartalmaz, akkor a fentinél gyorsabb a következő két parancs használata: ab = stdin.readline().split()  majd   a,b = int(ab[0]), int(ab[1])

Az stdout.write()-nak egy paramétere van, aminek string-nek kell lennie, és ezt sorvége karakter nélkül írja a kimenetre. Tehát ha például két külön sorba szeretnéd írni az a és b számokat, akkor ezt az stdout.write(str(a) + ‘\n’ + str(b) + ‘\n’) paranccsal tudod megtenni.

Main függvény

Definiálj egy main() függvényt, amibe a program törzsét írod, majd ezt egyedüli parancsként hívd meg. Ez a trükk tapasztalataink szerint nagyjából 20%-ot gyorsít a programon.

Példa program

Álljon itt egy példa program, ami beolvas n számot, majd kiírja ezek összegét és szorzatát.

from sys import stdin, stdout
def main():
    n = int(stdin.readline())
    szamok = list(map(int, stdin.readline().split()))
    osszeg = sum(szamok)
    szorzat = 1
    for x in szamok:
        szorzat *= x
    stdout.write(str(osszeg) + '\n' + str(szorzat) + '\n')
main()