Предмет: Информатика, автор: wyq

НУЖНА ВАША ПОМОЩЬ!
Наше агентство осуществило перехват нескольких предположительно шпионских сообщений. Однако возникли проблемы при декодировании.

Нам удалось узнать, что:

- каждый символ изначального сообщения закодировали последовательностью из нулей и единиц;
длина каждой из этих последовательностей равна k ;

- каждому символу поставлена в соответствие ровно одна последовательность из k нулей и единиц;
каждой последовательности из k нулей и единиц поставлен в соответствие ровно один символ;

-экземпляры таблицы декодирования испорчены ине подлежат восстановлению.

Большего вам знать не нужно.

Для первичного отделения шпионских сообщений от сообщений, попавших в рассмотрение случайно, нам нужна программа, подсчитывающая количество различных символов, используемых в сообщении, представленном в виде строки.

Берётесь за эту работу?

Формат входных данных

В первой строке входных данных два целых числа:

1≤n≤10^5 - длина строки;

1≤k≤n - длина последовательностей, которыми были закодированы символы.

Во второй строке дано сообщение в виде строки s .

Гарантируется, что число n кратно k и закодированная строка s состоит из n символов, каждый из которых равен 0 или 1 .

Формат выходных данных

Выведите одно положительное число – количество различных символов в строке.

Пример -

Ввод:
9 3
001000100
Вывод:
3

Надеюсь на вас :) (любой язык программирования)

Ответы

Автор ответа: MaxLevs
3

C#. Пример работы на изображении. (Входные данные отличаются)

using System;

using System.Collections.Generic;

using System.Linq;


namespace NSymbs

{

   class Program

   {

       static void Main(string[] args)

       {

           string input;

           input = Console.ReadLine();

           int[] param = input.Split("\t ".ToCharArray()).Select(x => int.Parse(x)).ToArray();

           input = Console.ReadLine();

           int z = input.Length / param[1];

           List<string> bufer = new List<string>();

           for (int i = 0; i < z; ++i)

               bufer.Add(input.Substring(i*param[1], param[1]));

           Console.WriteLine(bufer.Distinct().Count());

       }

   }

}


Приложения:

wyq: Спасибо! Программа идеально работает. Задачка будет удалена
wyq: Хотя нет, её похоже уже удалить нельзя. Передаю привет всем тем, кто пишет НТИ. Удачи)
MaxLevs: "идеально работает" По оценке и не скажешь :D
wyq: А как выбрать твой ответ лучшим? Я просто тут впервые.
wyq: И да, ты же хорошо знаешь C#. У меня еще есть пара интересных задач. Поможешь решить?)
wyq: Я оценку в 5 звезд поставил
wyq: Неееет, не умирай
MaxLevs: Взаимно :D
Похожие вопросы
Предмет: Биология, автор: Kosheshka
Предмет: Алгебра, автор: Аноним
Предмет: Математика, автор: карнелия656