Domarsystemet Kattis Gå till Kattis
Kattis är ett web-baserat datorprogram som automatiskt testar dina lösningar. Det används för att tävla i de flesta av olympiadens tävlingar. Kattis stödjer bara vissa språk. Du kan se vilka språk som är tillgängliga på Kattis här.
Indata- och utdata-hantering
Vi rekommenderar dokumentation inne på Kattis som steg för steg visar hur du ska skriva program som kan rättas av Kattis. I sammanfattning gäller att programmet ska läsa indata från standard input och skriva utdata till standard output. När du testar ditt program kan du alltså skriva in indatan direkt med tangentbordet eller lägga den i en fil och sedan använda kommandot
mittprogram < indatafil
som fungerar i såväl Windows kommandoprompt, Linux eller Mac. Observera att allting du skriver till standard output under programmets gång räknas som utdata. Du kan t.ex. inte låta programmet be användaren skriva in ett tal, eftersom Kattis tolkar din vänliga dialog som felaktig utdata.
Indata i uppgifterna består av en eller flera rader där varje rad kan innehålla flera tal eller strängar. Dessa åtskiljs alltid med blanksteg. Det lättaste sättet att läsa indata är därför att använda funktioner som hanterar indatan som en uppsättning tokens åtskilda av whitespace, som kan vara såväl blanksteg som radbrytningar.
Vi ger här ett exempel på hur man i fem olika språk kan läsa in följande indata:
4 6 3.22 Text
C
#include <stdio.h> ... int a1, a2; char word[100]; double d; scanf("%d %d", &a1, &a2); scanf("%lf %s", &d, word);
C++
#include <iostream> #include <string> using namespace std; ... int a1, a2; string word; double d; cin >> a1 >> a2; cin >> d >> word;
Java
import java.util.Scanner; ... Scanner sc = new Scanner(System.in); int a1 = sc.nextInt(), a2 = sc.nextInt(); double d = sc.nextDouble(); String word = sc.next();
Python
from sys import stdin tokens = stdin.readline().split() a1 = int(tokens[0]) a2 = int(tokens[1]) tokens = stdin.readline().split() d = float(tokens[0]) word = tokens[1]
C#
var tokens = System.Console.ReadLine().Split(); int a1 = int.Parse(tokens[0]); int a2 = int.Parse(tokens[1]); tokens = System.Console.ReadLine().Split(); double d = double.Parse(tokens[0]); string word = tokens[1];
Träningstips för tävlingar på Kattis
- Tänk på att kompilatorer beter sig olika. Vissa saker som är tillåtna i t.ex. Visual C++ är inte det i gcc. Träna på Kattis i förväg innan tävlingen!
- Se till att du vet hur man läser whitespace-separerad indata från standard input.
- Se till att du kan hantera 64-bitars heltal.
- Om du inte får full poäng på Kattis så skriv egna testdata där du kan se precis vad som händer.