Наше агентство осуществило перехват нескольких предположительно шпионских сообщений. Однако возникли проблемы при декодировании.Нам удалось узнать, что:- каждый символ изначального сообщения закодировали последовательностью из нулей и единиц;длина каждой из этих последовательностей равна k ;- каждому символу поставлена в соответствие ровно одна последовательность из k нулей и единиц;каждой последовательности из k нулей и единиц поставлен в соответствие ровно один символ;-экземпляры таблицы декодирования испорчены ине подлежат восстановлению.Большего вам знать не нужно.Для первичного отделения шпионских сообщений от сообщений, попавших в рассмотрение случайно, нам нужна программа, подсчитывающая количество различных символов, используемых в сообщении, представленном в виде строки.Берётесь за эту работу?Формат входных данныхВ первой строке входных данных два целых числа:1≤n≤10^5 - длина строки;1≤k≤n - длина последовательностей, которыми были закодированы символы.Во второй строке дано сообщение в виде строки s .Гарантируется, что число n кратно k и закодированная строка s состоит из n символов, каждый из которых равен 0 или 1 .Формат выходных данныхВыведите одно положительное число – количество различных символов в строке.Пример -Ввод:9 3001000100Вывод:3

язык C++

Ответы

Ответ дал: igorShap
0

#include <iostream>

#include <set>

int main()

{

std::set<std::string> Set;

int n, k;

std::cin >> n >> k;

char * s = new char[k + 1];

std::cin.clear();

while (std::cin.get() != 'n'){};

for (auto i = 0; i < n / k; i++)

{

 std::cin.get(s, k+1);

 Set.insert(s);

}

std::cout << Set.size();

return 0;

}

Вас заинтересует