Программисты! А вам слабо решить такую задачу?

программирование математика C++ С++ олимпиада

Вот тут полное условие. Задача под номером 1.
Со школьной олимпиады.
http://oi-minsk.narod.ru/respub/statements2.pdf
Ответы:
Алгоритм должен быть такой:
1) Определяем, какая буква повторяется и на каких местах в слове эти буквы стоят.
Например, в слове system это буква s и места k1 = 1 и k2 = 3. Длина слова N = 6.
2) Находим разность между числом N - k1 + 1 и числом k2. Это и есть количество ходов.
Если одна буква стоит на 3 месте, то вторая должна оказаться на 4, то есть X = N - k1 + 1 = 6 - 3 + 1 = 4.
А поскольку реально вторая буква стоит на 1 месте, то ей надо X = N - k1 + 1 - k2 = 6 - 3 + 1 - 1 = 3 хода.
На Visual Basic это будет примерно так:
Dim i As Integer, j As Integer, N As Integer, X As Integer, k1 As Integer, k2 As Integer,
Dim Stroka As String, Bukva As String, Mes As String
Stroka = InputBox ("Введите слово") ' Вводим слово
N = Len(Stroka) ' Находим количество букв в нем
For i = 1 To N-1
   For j = i+1 To N
       If Mid(Stroka, i, 1) = Mid(Stroka, j, 1) Then ' Находим одинаковые буквы
           Bukva = Mid(Stroka, i, 1) ' Находим эту букву
           k1 = i: k2 = j ' Присваиваем их номера переменным k1 и k2
       End If
   Next j
Next i
X = Abs(N - k1 + 1 - k2) ' Находим количество ходов
Mes = "Необходимо " & X & " ходов, это буква " & Bukva
MsgBox (Mes)
End


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.