Hodnocení úloh oblastního kola

Doplňování znamének

Funkce Body
Správné načtení hodnot a ošetření vstupu před nesprávnými hodnotami (řetězec místo čísla apod.) 1
Správné zobrazení výsledku (sčítance oddělené znaky + a -, případně text NELZE) 1
Spravné řešení mezních čísel: -23456789,-23456788,123456789,123456790,65536,-65536 2
Zobrazení správných výsledků čísel: 17,8,0,-21,11,159,-121 1
Zobrazení NELZE pro 160, -122 1
Automatické vyloučení čísel nad ±123456789 1
Nepoužívá se backtracking, ale prohledávání v cyklu 1
Heuristika pro vynechání některých nemožných kombinací 1

Měsíční kalendář

Funkce Body
Zformátování kalendáře do tabulky 1
Tlačítka pro pohodlný přechod mezi měsíci 1
Možnost výběru roku 1
Správné zobrazení února 2000 (obsahuje úterý 29. únor) 1
Správné zobrazení února 1980 (obsahuje úterý 29. únor) 1
Správné zobrazení srpna 2011 (1. srpna je pondělí) 1
Program pro zjištění dnů v daném měsící využívá systémové funkce pro práci s datem a časem 2
Použití již hotové komponenty ve vývojovém prostředí 1

Hanojské věže

Funkce Body
Možnost zvolení počtu kotoučů, grafické zobrazení kotoučů a kolíků 1
Uživatel může přesouvat kotouče a nemůže přitom porušit pravidla (položit větší kotouč na menší) 1
Rozpoznání koncového stavu a zobrazení počtu tahů 1
Automatické vyřešení úlohy pro 3,5 a 9 kotoučů po jednom bodu (celkem 3)
Použití metody rozděl a panuj (převedení na jednoduší úlohu a její řešení pomocí rekurzivního volání). Body se nedávají za tupé použití backtrackingu. 3

Nuly

Funkce Body
Ošetření vstupu 1
pro 5! vrací 1 1
pro 333! vrací 81 1
pro 2001! vrací 499 1
pro 32768! vrací 8189 1
pro 1234567890! vrací 308641968 1
Program se nesnaží spočítat hodnotu faktoriálu, ale počet nul odvodí z počtu dvojek a pětek v provočíselném rozkladu čísla n! 1
Program používá asi nejefektivnější metodu (viz přiložený program) -- zjišťuje počet pětek a jejich mocnin v prvočíselném rozkladu 2

Body za správný výpočet přidělte pouze v případě, že výsledku se program dopočítá do 5 sekund.

#include <iostream.h>

void main()
{
	long n = 0;
	long pocet = 0;
	long delitel = 5;

	while ((n<1) || (n>2000000000))
	{
		cout << "Zadejte cislo od 1 do 2000000000: ";
		cin >> n;
	}

	while (delitel <= n)
	{
		pocet += n / delitel;
		delitel *= 5;
	}

	cout << "Cislo " << n << "! ma na konci " << pocet << " nul."
		 << endl;

}

Vzájemná pozice trojúhelníků

Funkce Body
Kontrola, zda souřadnice tvoří trojúhelník a leží v zadaných mezích 1
Souřadnice lze zadat interaktivně (např. pomocí myši) 1
Správné zobrazení trojúhelníku uvnitř jiného trojúhelníku 1
Správné zobrazení nepřekrývajících se trojůhelníků 1
Správné zobrazení průniku částečně se překrývajících trojúhelníků 1
Pro jednotlivé trojúhelníky, jejich rozdíl a průnik se používají různé barvy 1
Průsečíky stran a pozice trojúhelníků se spočítají analyticky 2
Průnik trojúhelníků se určí průchodem řádek po řádku 1

Všechny úlohy

Ve všech úlohách se hodnotí dokumentace podle následujícího klíče:

Vhodně zvolené názvy proměnných 0,25
Přehledně odsazovaný zdrojový text 0,25
Komentáře ve vhodné míře 0,25
Uživatelská dokumentace a nápověda v programu 0,25