Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 18
1

Преобразование строк по заданному алгоритму

18.11.2016, 14:30. Просмотров 894. Ответов 6
Метки нет (Все метки)

Маленькая Элизабет любит играть со строками. У нее есть строка длины n, полностью состоящая из букв «a». Она делает со строкой следующие действия:

Если первая буква в строке «a», то Элизабет дописывает в конец строки «bc», после чего удаляет из строки первые 2 буквы.
Если первая буква в строке «b», то тогда Элизабет дописывает в конец строки «a», после чего также удаляет из строки первые 2 буквы.
Если же первая буква в строке «c», то Элизабет дописывает в конец строки «aaa», после чего опять удаляет из строки первые 2 буквы.
Элизабет останавливается после того, как у нее получится строка, состоящая из одной буквы. Например, при n = 4, для достижения цели ей требуется 6 шагов:

Элизабет обнаружила, что для некоторых n нужно делать слишком много операций, и не понятно, завершится ли процесс вообще. Поэтому она попросила Вас написать для этого программу.
Входные данные
В единственной строке дано одно целое число n (2 ≤ n ≤ 106).

Выходные данные
Выведите одно число — количество требуемых шагов. Если процесс будет продолжаться бесконечно — выведите  - 1.

Примеры
входные данные
4
выходные данные
6
входные данные
3
выходные данные
24
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2016, 14:30
Ответы с готовыми решениями:

Вывести числа по заданному алгоритму
Помогите пожалуйста, нужно вывести числа на экран таким образом: 9 4 8 8 3 3 ...

Зашифровать строку по заданному алгоритму.
Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных...

Построить матрицу по заданному алгоритму
Товарищи, нужна помощь. Задача следующая: построить матрицу D. Что она из себя представляет? Эта...

Заполнить массив по заданному алгоритму
Вычислить и заполнить Xi, если Xi > 0 Y1= 0, если Xi = 0 -1, если Xi < 0 ...

6
Эксперт C
23598 / 14813 / 3124
Регистрация: 24.12.2010
Сообщений: 31,649
18.11.2016, 14:34 2
Цитата Сообщение от whitedon2 Посмотреть сообщение
она попросила Вас написать для этого программу.
Кого она попросила? Только нас? Или сначала все-таки - вас? И у вас не получилось, да? Но что-то вы пытались сделать? Или нет? В таком случае Лизонька обратилась не по адресу....
0
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 18
18.11.2016, 14:36  [ТС] 3
Смешно,лучше бы помог
0
Эксперт C
23598 / 14813 / 3124
Регистрация: 24.12.2010
Сообщений: 31,649
18.11.2016, 14:49 4
Цитата Сообщение от whitedon2 Посмотреть сообщение
помог
А ты знаешь разницу между "Помочь" и "Сделать за тебя"?
0
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 18
18.11.2016, 14:50  [ТС] 5
Хорошо,сделай за меня
0
Форумчанин
Эксперт CЭксперт С++
8152 / 5002 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
18.11.2016, 15:01 6
Лучший ответ Сообщение было отмечено whitedon2 как решение

Решение

Решение в лоб
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <deque>
#include <iostream>
 
int main()
{
    unsigned N, counter = 0;
    std::cin >> N;
    std::deque<char> s(N, 'a');
    while (s.size() != 1)
    {
        switch (*s.begin())
        {
        case ('a'):
            s.push_back('b');
            s.push_back('c');
            break;
        case ('b'):
            s.push_back('a');
            break;
        case ('c'):
            s.push_back('a');
            s.push_back('a');
            s.push_back('a');
            break;
        }
        s.pop_front();
        s.pop_front();
        counter++;
    }
    std::cout << counter;
}
1
Эксперт C
23598 / 14813 / 3124
Регистрация: 24.12.2010
Сообщений: 31,649
18.11.2016, 15:03 7
Цитата Сообщение от whitedon2 Посмотреть сообщение
сделай за меня
А зачем?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2016, 15:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Заполнение матрицы по заданному алгоритму
Напишите программу, в которой объявляется массив размером 5х10 и массив размером 5х5. Первый массив...

Преобразовать строку по заданному алгоритму
Заданная строка S. Преобразовать S следующим образом: 1) удалить из S первое вхождение...

Программа, работающая по заданному алгоритму
Помогите написать программу по данному алгоритму

Генерация слова по заданному алгоритму
Помогите пожалуйста. Нужно сгенерировать слово ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.