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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Пример -

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

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

Ответы 6

  • А как выбрать твой ответ лучшим? Я просто тут впервые.
  • И да, ты же хорошо знаешь C#. У меня еще есть пара интересных задач. Поможешь решить?)
    • Автор:

      bj
    • 5 лет назад
    • 0
  • Я оценку в 5 звезд поставил
  • Неееет, не умирай
  • Взаимно :D
    • Автор:

      daria83
    • 5 лет назад
    • 0
  • 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());

           }

       }

    }

    answer img
    • Автор:

      lucifer31
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years