Skip to content

Commit 29f6b16

Browse files
committed
add task 7
1 parent 959af7c commit 29f6b16

File tree

3 files changed

+71
-1
lines changed

3 files changed

+71
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* [`1296` Гиперпереход](task_4_1296)
88
* [`1401`](task_5_1401)
99
* [`1207` Медиана на плоскости](task_6_1207)
10-
* [`1322`](task_7_1322)
10+
* [`1322` Шпион](task_7_1322)
1111
* [`1444`](task_8_1444)
1212
* [`1604` В Стране Дураков](task_9_1604)
1313
* [`1726` Кто ходит в гости…](task_10_1726)

Diff for: task_7_1322/1322.cpp

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <algorithm>
2+
#include <iostream>
3+
4+
using namespace std;
5+
6+
struct char_i {
7+
char c;
8+
int index;
9+
};
10+
11+
bool sort_char_i(const char_i a, const char_i b) {return a.c < b.c;}
12+
13+
int main() {
14+
int n;
15+
cin >> n;
16+
--n;
17+
char c;
18+
char_i s[100000];
19+
int length = 0;
20+
while (cin.get(c)) {
21+
if (length > 0 && (c == '\n' || c == '\r'))
22+
break;
23+
else if (isspace(c))
24+
continue;
25+
s[length] = {c, length};
26+
++length;
27+
}
28+
29+
stable_sort(s, s+length, sort_char_i);
30+
31+
int j = n;
32+
for (int i = 0; i < length; ++i, j = s[j].index)
33+
cout << s[j].c;
34+
cout << endl;
35+
36+
return 0;
37+
}

Diff for: task_7_1322/README.md

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Задача 7 (1322. Шпион)
2+
3+
## Условие
4+
5+
Спецслужбы обнаружили действующего иностранного агента. Шпиона то есть. Установили наблюдение и выяснили, что каждую неделю он через Интернет посылает кому-то странные нечитаемые тексты. Чтобы выяснить, к какой информации получил доступ шпион, требуется расшифровать информацию. Сотрудники спецслужб проникли в квартиру разведчика, изучили шифрующее устройство и выяснили принцип его работы.S<sub>1</sub> = s<sub>1</sub>s<sub>2</sub>...s<sub>N</sub>. Получив ее, устройство строит все циклические перестановки этой строки, то есть S<sub>2</sub> = s<sub>2</sub>s<sub>3</sub>...s<sub>N</sub>s<sub>1</sub>, ..., S<sub>N</sub> = s<sub>N</sub>s<sub>1</sub>s<sub>2</sub>...s<sub>N-1</sub>. Затем множество строк S<sub>1</sub>, S<sub>2</sub>, ..., S<sub>N</sub> сортируется лексикографически по возрастанию. И в этом порядке строчки выписываются в столбец, одна под другой. Получается таблица размером N × N. В какой-то строке K этой таблицы находится исходное слово. Номер этой строки вместе с последним столбцом устройство и выдает на выход.
6+
Например, если исходное слово S<sub>1</sub> = abracadabra, то таблица имеет такой вид:<br>
7+
aabracadabr = S<sub>11</sub><br>
8+
abraabracad = S<sub>8</sub><br>
9+
abracadabra = S<sub>1</sub><br>
10+
acadabraabr = S<sub>4</sub><br>
11+
adabraabrac = S<sub>6</sub><br>
12+
braabracada = S<sub>9</sub><br>
13+
bracadabraa = S<sub>2</sub><br>
14+
cadabraabra = S<sub>5</sub><br>
15+
dabraabraca = S<sub>7</sub><br>
16+
raabracadab = S<sub>10</sub><br>
17+
racadabraab = S<sub>3</sub><br>
18+
И результатом работы устройства является число 3 и строка rdarcaaaabb.
19+
Это все, что известно про шифрующее устройство. А вот дешифрующего устройства не нашли. Но поскольку заведомо известно, что декодировать информацию можно (а иначе зачем же ее передавать?), Вам предложили помочь в борьбе с хищениями секретов и придумать алгоритм для дешифровки сообщений. А заодно и реализовать дешифратор.
20+
21+
## Исходные данные
22+
23+
В первой и второй строках находятся соответственно целое число и строка, возвращаемые шифратором. Длина строки и число не превосходят 100000. Строка содержит лишь следующие символы: a-z, A-Z, символ подчеркивания. Других символов в строке нет. Лексикографический порядок на множестве слов задается таким порядком символов:
24+
`ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz`
25+
Символы здесь выписаны в порядке возрастания.
26+
27+
## Результат
28+
Выведите декодированное сообщение в единственной строке.
29+
30+
## Примеры
31+
| Исходные данные | Результат |
32+
|---|---|
33+
|3 <br> rdarcaaaabb| abracadabra |

0 commit comments

Comments
 (0)