\section{Java}
\lstset{language=Java}

\subsection{Introduction}

\begin{itemize}
\item Compilen: \lstinline{javac main.java}
\item Ausführen: \lstinline{java main < sample.in}
\item Eingabe:
\lstinline{Scanner} ist sehr langsam. Bei großen Eingaben muss ein Buffered Reader verwendet werden.
\begin{lstlisting}
Scanner in = new Scanner(System.in); // java.util.Scanner
String line = in.nextLine(); // Liest die nächste Zeile.
int num = in.nextInt(); // Liest das nächste Token als int.
double num2 = in.nextDouble(); // Liest das nächste Token als double.
\end{lstlisting}
\item Ausgabe:
\begin{lstlisting}
// Ausgabe in StringBuilder schreiben und am Ende alles auf einmal ausgeben. -> Viel schneller.
StringBuilder sb = new StringBuilder(); // java.lang.StringBuilder
sb.append("Hallo Welt");
System.out.print(sb.toString());
\end{lstlisting}
\end{itemize}

\subsection{BigInteger}
\begin{lstlisting}
// Berechnet this +,*,/,- val.
BigInteger add(BigInteger val), multiply(BigInteger val), divide(BigInteger val), substract(BigInteger val)

// Berechnet this^e.
BigInteger pow(BigInteger e)

// Bit-Operationen.
BigInteger and(BigInteger val), or(BigInteger val), xor(BigInteger val), not(), shiftLeft(int n), shiftRight(int n)

// Berechnet den ggT von abs(this) und abs(val).
BigInteger gcd(BigInteger val)

// Berechnet this mod m, this^-1 mod m, this^e mod m.
BigInteger mod(BigInteger m), modInverse(BigInteger m), modPow(BigInteger e, BigInteger m)

// Berechnet die nächste Zahl, die größer und wahrscheinlich prim ist.
BigInteger  nextProbablePrime()

// Berechnet int/long/float/double-Wert. Ist die Zahl zu großen werden die niedrigsten Bits konvertiert.
int intValue(), long longValue(), float floatValue(), double doubleValue() 
\end{lstlisting}
\lstset{language=C++}