Felmérő - tömbök - 2

Felmérő lesz frekvenciatömbökből 2026.márc.20-án, pénteken.

Tétel

2 pont jár hivatalból. Munkaidő: 45 perc.

1.

Az input.txt fájlban adottak 10000-nél nem nagyobb természetes számok (nem tudjuk előre, hogy hány darab; beolvasás – 1p).

  1. Írjuk ki, hogy hány olyan érték van a sorozatban, ami nem ismétlődik! (1p)
  2. Írjuk ki az összes kétjegyű elemet növekvő sorrendben! (1p)
  3. Írjuk ki azt a legnagyobb háromjegyű természetes számot, ami nem jelenik meg a sorozatban! (1p)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int frekv[10001] = {};

    int szam;
    while (be >> szam) {
        frekv[szam]++;
    }

    int db = 0;
    for (int i = 0; i <= 10000; i++)
        if (frekv[i] == 1)
            db++;

    cout << db << endl;

    for (int i = 10; i <= 99; i++)
        for (int j = 0; j < frekv[i]; j++)
            cout << i << " ";
    cout << endl;

    int legnagyobb = 0;
    for(int i = 100; i < 1000; i++)
        if (frekv[i] == 0)
            legnagyobb = i;

    cout << legnagyobb << endl;
    return 0;
}

2.

A bac.txt fájlban adottak az n és m természetes számok (n, m <= 106), majd egy n elemű és egy m elemű sorozat (természetes számok <= 103; beolvasás - 1p).

  1. Hány olyan kétjegyű szám van, ami ugyanannyiszor jelenik meg előtagként (prefix) mint utótagként (sufix) az első sorozatban. (1p)
  2. Minden egyjegyű számra írjuk ki, hogy a második sorozatban hányadik helyen jelenik meg utoljára (vagy -1-et, ha nem jelenik meg). (1p)
  3. Hány olyan (x,y) elempár létezik, amelyben x és y utolsó két számjegye azonos, illetve x az első, y pedig a második sorozat eleme? (1p)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("bac.txt");

    int n, m;
    be >> n >> m;

    int hanyszor_prefix[100] = {};
    int hanyszor_sufix[100] = {};

    for (int i = 0; i < n; i++) {
        int szam;
        be >> szam;

        if (szam >= 10) {
            hanyszor_sufix[szam % 100]++;

            int seged = szam;
            while (seged > 99)
                seged /= 10;
            hanyszor_prefix[seged]++;
        }
    }

    int db = 0;
    for (int i = 10; i <= 99; i++) {
        if (hanyszor_prefix[i] != 0 && hanyszor_prefix[i] == hanyszor_sufix[i])
            db++;
    }

    cout << db << endl;

    int utoljara_hol[10];
    for (int i = 0; i <= 9; i++)
        utoljara_hol[i] = -1;

    int hanyszor_sufix2[100] = {};

    for (int i = 1; i <= m; i++) {
        int szam;
        be >> szam;

        if (szam >= 10)
            hanyszor_sufix2[szam%100]++;

        if (szam <= 9)
            utoljara_hol[szam] = i;
    }

    for (int i = 0; i <= 9; i++)
        cout << i << ": " << utoljara_hol[i] << endl;

    int c_alpont = 0;
    for (int i = 0; i <= 99; i++) {
        int p1 = hanyszor_sufix[i];
        int p2 = hanyszor_sufix2[i];

        c_alpont += p1*p2;
    }

    cout << c_alpont << endl;
    return 0;
}