III.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| int MaxImp(int a, int b)
{
int eredmeny = 0;
for (int x = a; x <= b; x++) {
int szorzat = 1;
for (int d = 3; d <= x; d+=2)
if (x % d == 0)
szorzat *= d;
if (szorzat > x)
eredmeny = x;
}
return eredmeny;
}
|
Vagy:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| int MaxImp(int a, int b)
{
int eredmeny = 0;
for (int x = b; x >= a; x--) {
int szorzat = 1;
for (int d = 3; d <= x; d+=2)
if (x % d == 0)
szorzat *= d;
if (szorzat > x && eredmeny == 0)
eredmeny = x;
}
return eredmeny;
}
|
Vagy:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| int MaxImp(int a, int b)
{
for (int x = b; x >= a; x--) {
int szorzat = 1;
for (int d = 3; d <= x; d+=2)
if (x % d == 0)
szorzat *= d;
if (szorzat > x)
return x;
}
return 0;
}
|
III.2
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
| #include <iostream>
using namespace std;
int main()
{
int t[20][20];
int n;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> t[i][j];
int valasz = 1;
for (int k = 2; k <= n; k++) {
// a k x k méretű bal felső
// négyzetet teszteljük
bool jo = true;
for (int i = 0; i < k; i++)
for (int j = 0; j < k; j++)
if (t[i][j] != t[0][0])
jo = false;
if (jo)
valasz = k;
}
cout << valasz << endl;
return 0;
}
|
Vagy:
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
| #include <iostream>
using namespace std;
int main()
{
int t[20][20];
int n;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> t[i][j];
int valasz = 1;
bool jo = true;
for (int k = 2; k <= n && jo; k++) {
// a k x k méretű bal felső
// négyzetet teszteljük
for (int i = 0; i < k; i++)
for (int j = 0; j < k; j++)
if (t[i][j] != t[0][0])
jo = false;
if (jo)
valasz = k;
}
cout << valasz << endl;
return 0;
}
|
Vagy:
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
| #include <iostream>
using namespace std;
int main()
{
int t[20][20];
int n;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> t[i][j];
int valasz = 1;
bool jo = true;
for (int k = 2; k <= n && jo; k++) {
// a k x k méretű bal felső
// négyzetet teszteljük
// [k-1] sor:
for (int j = 0; j < k; j++)
if (t[k-1][j] != t[0][0])
jo = false;
// [k-1] oszlop:
for (int i = 0; i < k; i++)
if (t[i][k-1] != t[0][0])
jo = false;
if (jo)
valasz = k;
}
cout << valasz << endl;
return 0;
}
|
III.3
b.
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
| #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream be("bac.txt");
int f[1001] = {};
int x;
while (be >> x)
f[x]++;
for (int i = 1; i <= 1000; i += 2)
for (int j = 1; j <= f[i]; j++)
cout << i << " ";
for (int i = 0; i <= 1000; i += 2)
for (int j = 1; j <= f[i]; j++)
cout << i << " ";
cout << endl;
return 0;
}
|
a.
Az algoritmus frekvenciatömböt épít
a beolvasott elemekből, majd végigjárja
előbb a páratlan, aztán a páros értékeket
a [0,1000] intervallumból és mindegyiket
annyiszor írja ki, ahányszor az eredeti
sorozatban megjelent.
Idő szempontjából azért hatékony, mert
egyszer halad végig a sorozat elemein
(mindegyikre konstans számú lépést végez el).