.

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.

Súbor na stiahnutie

 

Ú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.

Súbor na stiahnutie

 

Ú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

Súbor na stiahnutie

 

 

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;
}
--------------------------------------

Správne hodnoty sa dozvieš TU

Úloha č. 5

ODPOVEĎ:

ODPOVEĎ na súťažnú úlohu sa dozviete TU