Zadania úloh
Úloha č. 1
Zadanie:
Majme pole celých čísel, zisti minimálny počet mazaní tak, aby v poli ostali prvky iba jednej hodnoty
Príklad:
arr = [1,2,2,3]
pole arr' = [1] dosiahneme zmazaním 2, 2 a 3, t.j. 3 zmazania.
pole arr' = [2,2] dosiahneme zmazaním 1 a 3, t.j. 2 zmazania.
pole arr' = [3] dosiahneme zmazaním 1, 2 a 2, t.j. 3 zmazania.
Minimálny počet mazaní je teda 2.
Popis funkcie:
Vytvor metódu cleanArray, ktoré má 1 vstup, kolekciu celých čísel
Návratová hodnota:
Číslo, minimálny počet mazaní potrebných na vyčistenie poľa.
Formát vstupu:
Prvý riadok reprezentuje celé číslo 'n', počet prvkov v poli.
Ďalší riadok obsahuje 'n' medzerou oddelených celých čísel arr[i].
Nasledujúci ďalší druhý až x-tý riadok reprezentuje celé číslo 'nj', počet prvkov v poli pre j. príklad.
Ďalší riadok obsahuje 'nj' medzerou oddelených celých čísel arr[i].
Obmedzenia:
1 <= n <= 100
1 <= arr[i] <= 100
Vzorový vstup:
5
3 3 2 1 3
7
2 5 6 2 4 3 2
Vzorový vystup:
2
4
Vysvetlenie:
- aby ostali iba 1-ky [1], je potrebné vymazať prvky: arr[0], arr[1], arr[2], arr[4] čo sú 4 zmazania
- aby ostali iba 2-ky [2], je potrebné vymazať prvky: arr[0], arr[1], arr[3], arr[4] čo sú 4 zmazania
- aby ostali iba 3-ky [3,3,3], je potrebné vymazať prvky: arr[2], arr[3] čo sú 2 zmazania
Do riešenia zadaj výsledok a pripoj zdrojový kód tvojho programu.
Úloha č. 2
Zadanie
Najmenšie číslo, ktoré môže byť vydelené bez zvyšku každým číslom od 1 do 10, je 2520.
Aké je druhé najmenšie kladné číslo, ktoré môže byť rovnomerne deliteľné všetkými číslami od 1 do 21?
Do políčka s odpoveďou zadaj výslednú hodnotu a zdrojový kód tvojho programu.
Úloha č. 3
Zadanie
Začni číslom 1, pohybom v smere hodinových ručičiek sa vytvorí špirála 5x5 takto:
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
Súčet čísel v uhlopriečkach je 101.
Spočítaj súčet čísel v uhlopriečkach v špirále 501x501.
Do políčka s odpoveďou zadaj výslednú hodnotu a zdrojový kód tvojho programu.
Úloha č. 4
Zadanie
Číslo zapísané rímskymi číslicami je validné, ak vyhovuje niekoľkým základným pravidlám. Väčšina čísel je možné zapísať viacerými spôsobmi, ale len jeden spôsob je ten správny.
Príklad:
16 vieme zapísať takto:
IIIIIIIIIIIIIIII
VIIIIIIIIIII
VVIIIIII
XIIIIII
VVVI
XVI
Podľa pravidiel validný zápis je len XVI, keďže využíva najmenší možný počet číslic na vyjadrenie.
Napíš program, ktorý nahradí v riadku existujúci zápis rímskymi číslicami za ten najefektívnejši.
Vstup:
Vstup obsahuje na každom riadku číslo zapísané rímskymi číslicami, ktoré môže a nemusí byť zapísané v optimálnom tvare.
Očakávaný výstup:
Pre každý testovací prípad vypíš riadok obsahujúci správny (najefektívnejší) tvar čísla rímskymi číslicami.
Do políčka s výsledkom zadaj výsledné hodnoty. Pridaj aj zdrojový kód tvojho programu.
Úloha č. 5
ZADANIE
Ostrovy a mosty
Dostaneš mapu ostrovov vo forme matice, kde 1 sú pevnina a 0 sú voda.
Tvojou úlohou je vypočítať, koľko materiálu je potrebné na spojenie všetkých ostrovov mostami. Ostrov je definovaný ako oblasť pozemných buniek spojených buď vertikálne alebo horizontálne.
Most možno postaviť z 1, 2 alebo 3 po sebe nasledujúcich buniek. Jedna bunka sa považuje za jednu jednotku materiálu. Mosty sa stavajú len v horizontálnom alebo vertikálnom smere.
Cieľom je spojiť všetky ostrovy. Mosty sa môžu krížiť, avšak bunka obsahujúca 2 mosty súčasne sa považuje za 2 materiálové jednotky.
Vstup
Vstup začína počtom testovacích prípadov T (0 ≤ T ≤ 100). Každý testovací prípad začína riadkom obsahujúcim dve celé čísla N a M (1 ≤ N ≤ 100, 1 ≤ M ≤ 100), kde N je počet riadkov a M je počet stĺpcov v matici. Potom nasleduje N riadkov, z ktorých každý obsahuje M celých čísel z množiny {0, 1}.
Výstup
Pre každý testovací prípad vytlač riadok obsahujúci množstvo materiálu potrebného na stavbu mostov, ktoré sú schopné spojiť všetky ostrovy. Ak sa ostrovy nedajú spojiť, vytlač -1.
Do políčka s odpoveďou zadaj riešenie a zdrojový kód tvojho programu.
Príklad:
Input:
3
6 3
000
010
000
000
010
000
6 5
00000
01001
01101
00001
01001
01000
3 5
01100
10100
01001
Output
2
2
4
Vysvetlenie:
Priklad 1:
Sú 2 ostrovy A a B, ktoré môžu byť prepojené 1 mostom s dĺžkou 2.
A
|
|
B
Príklad 2:
Sú 3 ostrovy A, B a C, ktoré môžu byť prepojené 2 mostami s dĺžkou 1.
A B
AA-B
| B
C B
C
Príklad 3
Sú 4 ostrovy A, B, C a D, ktoré môžu byť spojené 2 krížiacimi sa mostami s dĺžkou 1 a jedným mostom s dĺžkou 2.
AA
B+A
C--D
Správne odpovede
Úloha č. 1
Spravne hodnoty su nasledovne:
0
1
2
3
3
4
5
5
6
7
6
9
10
11
8
11
12
11
13
15
16
15
17
17
19
20
20
20
22
21
23
24
25
26
25
29
28
29
31
31
32
32
32
34
36
35
38
38
38
38
40
39
39
41
42
42
44
44
46
44
47
47
48
51
51
52
51
49
55
53
55
54
59
59
58
59
59
61
63
63
64
65
64
67
67
67
67
69
70
70
69
73
73
71
73
76
74
80
80
77
Zo spravnych rieseni sme vybrali jedno nasledujuce:
private int cleanArray(List<Integer> numbers) {
Map<Integer, Long> counter = numbers.stream().collect(Collectors.groupingBy(number -> number, Collectors.counting()));
return (int) (numbers.size() - Collections.max(counter.entrySet(), Map.Entry.comparingByValue()).getValue());
}
Úloha č. 2
Správna hodnota je 465585120.
Zo správnych riešení sme ako príklad vybrali:
--------------------------------------
x = 21
count = 0
while count < 2:
x += 1
for i in range(1,22):
if (x % i != 0):
break
else:
print(x)
count += 1"
--------------------------------------
Úloha č. 3
Správna hodnota je 83960501
Zo správnych riešení sme vybrali nasledujúce:
--------------------------------------
public class Main {
public static void main(String[] args){
System.out.println(spiralDiagonalSum(501));
}
static long spiralDiagonalSum(int n){
if(n==1) return 1;
return spiralDiagonalSum(n-2)+(long) Math.pow(n,2)*4-6*n+6;
}
}
--------------------------------------
Úloha č. 4
Zo správnych riešení sme vybrali nasledujúce:
--------------------------------------
<?php
// PHP 8.0.2
function roman_num ($numeric) {
$numeric = str_replace('IIIII', 'V', $numeric);
$numeric = str_replace('VV', 'X', $numeric);
$numeric = str_replace('XXXXX', 'L', $numeric);
$numeric = str_replace('LL', 'C', $numeric);
$numeric = str_replace('CCCCC', 'D', $numeric);
$numeric = str_replace('DD', 'M', $numeric);
$numeric = str_replace('VX', 'V', $numeric);
$numeric = str_replace('LC', 'L', $numeric);
$numeric = str_replace('DM', 'D', $numeric);
return $numeric;
}
--------------------------------------
Úloha č. 5
ODPOVEĎ: