Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 03.11.2019
Сообщений: 36

Магическая последовательность

06.11.2019, 23:50. Показов 3411. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны последовательности: 1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, . . .
Выпишите К-ю последовательность.
Input Output
4 1211
Заранее спасибо!

P.S. Нашёл в Интернете как строится эта последовательность, но не могу реализовать.
1 читается как «одна единица», то есть 11
11 читается как «две единицы», то есть 21
21 читается как «одна двойка, одна единица», то есть 1211
1211 читается как «одна единица, одна двойка, две единицы», то есть 111221
111221 читается как «три единицы, две двойки, одна единица», то есть 312211
312211 читается как «одна тройка, одна единица, две двойки, две единицы», то есть 13112221
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2019, 23:50
Ответы с готовыми решениями:

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность.
Доделать программу, чтобы работала как надо Задана последовательность слов. Определить частоту вхождения каждого слова в...

Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей
Дана последовательность действительных чисел a1 <= a2<= ... <=an вставить действительное число b так чтобы последовательность осталась...

Построить последовательность из 0 и 1, в которой Bi=1 если элементы i-го столбца образуют убывающую последовательность
Дана действительная квадратная матрица порядка n. Построить последовательность В1,В2,...,Вп из нулей и единиц, в которой Bi=1 тогда,и...

14
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
07.11.2019, 10:31
Цитата Сообщение от Snaces Посмотреть сообщение
но не могу реализовать.
декомпозиция это наше усё!

для начала вот такая заготовка:
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
32
33
34
35
36
37
38
39
40
41
42
43
///----------------------------------------------------------------------------|
/// Магическая последовательность.
///----------------------------------------------------------------------------:
#include <iostream>
 
struct sTask
{   sTask()
    {   char* a   = new char[1024];
        char* res = new char[1024];
        a[0] = '1';
        
        int k = 7; //std::cin >> k;
        
        while(k-- != 0)
        {   int count = 0;
            for(int i = 1; a[i] != 0; i++)
            {   
                ... /// Считаем кол-во одинаковых элементов.
                ... /// ...
                
            }
            res[...] = 0; // терминируем res.
            
            std::swap(a, res);
        }
        
        std::cout << res << "\n";
 
        std::cin.get();
        delete[] a;
        delete[] res;
    }
 
};
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    sTask task;
    return 0;
}
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 10:43
передумал, не знаю как удалить
1
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
07.11.2019, 10:54
outoftime, нет, нет.
спасибо я вам кредитом за "могу реализовать"
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 11:08
XLAT, что если там 10 единиц?

Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
for(int i = 1; a[i] != 0; i++)
Это условие смущает

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
for(int i = 1; a[i] != 0; i++)
Это условие смущает
Цитата Сообщение от XLAT Посмотреть сообщение
спасибо я вам кредитом за "могу реализовать"
Меня brute-force не интересует, только https://www.cyberforum.ru/cgi-bin/latex.cgi?O(1), если найду - отпишусь.

Добавлено через 4 минуты
Snaces, XLAT, лень, как-то. Надо выписать штук 10 или 100 первых и посмотреть какие у итоговой последовательности есть закономерности, благо наш мозг заточен чтобы таковые искать, главное подать информацию в формате удобном для поиска оных.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
07.11.2019, 11:19
Цитата Сообщение от outoftime Посмотреть сообщение
лень, как-то. Надо выписать штук 10 или 100 первых
brute-force-ом выведи
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
07.11.2019, 11:30
https://www.rosettacode.org/wi... sequence#C
2
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
07.11.2019, 11:36
Цитата Сообщение от outoftime Посмотреть сообщение
что если там 10 единиц?
преобразовать 10 в строку и записать в массив.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 12:01
XLAT, чтобы выписать последовательность, делаю вот так
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string>
#include <sstream>
 
int main() {
    int n = 10, k = n;
    std::string tmp = "1";
    while (--k) {
        std::ostringstream ss(std::ios_base::app);
        size_t count = 1;
        auto cur = std::next(tmp.begin()), prev = tmp.begin();
        for (; cur != tmp.end(); ++cur) {
            if (*cur == *prev) {
                ++count;
            } else {
                ss << count << (*prev);
                count = 1;
                prev = cur;
            }
        }
        ss << count << (*prev);
        std::cout << (n-k) << ": " << tmp << std::endl;
        tmp = ss.str();
    }
    std::cout << (n-k) << ": " << tmp << std::endl;
}


Добавлено через 6 минут
Цитата Сообщение от _stanislav Посмотреть сообщение
brute-force-ом выведи
было выше
Цитата Сообщение от outoftime Посмотреть сообщение
Меня brute-force не интересует
Добавлено через 51 секунду
XLAT, я сильно не вникал, просто показалось что нули в вашей реализации недопустимы
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
07.11.2019, 12:16
Цитата Сообщение от outoftime Посмотреть сообщение
просто показалось что нули в вашей реализации недопустимы
ноль там чтоб завершить строку.
обычная, кровь из носа необходимая, практика.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 13:02
XLAT, прикинул первые 50 строк, последовательность не плохо так читается начиная с начала. Всматриваться дальше 4ого столбца тяжеловато. Всё ещё считаю что поиск https://www.cyberforum.ru/cgi-bin/latex.cgi?k-ого члена последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?O(1), доказывать, просто, лень. Скорость роста длины последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?2^k в худшем случае, если нету одинаковых соседей. На практике, около 3-4 членов удваивают количество цифр последовательности.
1
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
07.11.2019, 21:33
Snaces,
я бы доделал бы свою прогу, но
nalbe666 кайф поломал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char *a = malloc(2), *b = 0, *x, c;
    int cnt, len = 1;
 
    for (sprintf(a, "1"); (b = realloc(b, len * 2 + 1)); a = b, b = x) {
        puts(x = a);
        for (len = 0, cnt = 1; (c = *a); ) {
            if (c == *++a)
                cnt++;
            else if (c) {
                len += sprintf(b + len, "%d%c", cnt, c);
                cnt = 1;
            }
        }
    }
 
    return 0;
}
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
#include <iostream>
#include <sstream>
#include <string>
 
std::string lookandsay(const std::string& s)
{
    std::ostringstream r;
 
    for (std::size_t i = 0; i != s.length();) {
        auto new_i = s.find_first_not_of(s[i], i + 1);
 
        if (new_i == std::string::npos)
            new_i = s.length();
 
        r << new_i - i << s[i];
        i = new_i;
    }
    return r.str();
}
 
int main()
{
    std::string laf = "1";
 
    std::cout << laf << '\n';
    for (int i = 0; i < 10; ++i) {
        laf = lookandsay(laf);
        std::cout << laf << '\n';
    }
}
0
1 / 1 / 0
Регистрация: 03.11.2019
Сообщений: 36
07.11.2019, 21:45  [ТС]
XLAT
Ой, твоя прога мне была более понятна, эти как-то не очень, есть незнакомые функции. Доделаешь свою старую но без структуры? (и без потоков)
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
08.11.2019, 00:15
Цитата Сообщение от Snaces Посмотреть сообщение
твоя прога мне была более понятна
ещё бы, конечно понятно, так как основная часть спрятана в тумане.

берите вон вариант на СИ пробуйте разбираться,
там чуть больше, чем десять строчек.

Добавлено через 15 минут
Snaces,
вот для вас доделал:
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
32
33
34
35
36
37
38
39
40
41
42
43
///----------------------------------------------------------------------------|
/// Магическая последовательность
///----------------------------------------------------------------------------:
#include <iostream>
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    char* a   = new char[1024];
    char* res = new char[1024];
        a[0] = '1';
        a[1] = 0;
        
        int k = 15; //std::cin >> k;
        
        while(k-- != 0)
        {   
            char count = 1;
            int j     = 0;
            for(int i = 0; a[i] != 0; i++)
            {   
                if(a[i] == a[i+1])
                {   count++;
                }
                else
                {   res[j++] = count + '0';
                    res[j++] = a[i];
                    count = 1;
                }
            }
            res[j] = 0;
            std::swap(a, res);
        }
    std::cout << a << "\n";
 
    std::cin.get();
    delete[] a;
    delete[] res;
    
    return 0;
}
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
08.11.2019, 17:55
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
32
33
34
35
36
37
38
39
#include <iostream>
#include <sstream>
using namespace std;
 
string f(string t,string s){
   stringstream x;
   x<<t;
   s="";
   while(x>>t){
     s+=t.size()+'0';
     s+=t[0];
    }
  return s;
 }
 
int main()
{
 string s="1",t;
 size_t i,k;
 
 cin>>k;
 for(int j=1;j<k;j++){
    t+=s[0];
    i=1;
    while(s[i]!='\0'){
       if(s[i]==s[i-1])t+=s[i];
       if(s[i]!=s[i-1]){
          t+=' ';
          t+=s[i];
        }
       i++;
     }
    s=f(t,s);
    t="";
   }
 cout <<s<<"\n";
 system("pause");
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2019, 17:55
Помогаю со студенческими работами здесь

Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующе
Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующейся. не пойму как сделать,...

Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей.
дана последовательность действительных чисел. вставить в нее действительное число b так, чтобы последовательность осталась неубывающей. ...

Можно ли разрезать последовательность на две части и поменять их местами, чтобы последовательность стала симметричной?
Здрасте! Помогите пожалуйста с задачой из универа по с++ &quot;Можно ли разрезать последовательность на две части, и поменять их местами,...

Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность
Дана последовательность действительных чисел X1,X2,X3,…,Xn (n&gt;2, заранее неизвестно). Если последовательность отсортирована по возрастанию,...

Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр
Здравствуйте. На форуме есть код подобный, но по возрастанию сумм элементов. Как мне подправить код, чтобы было &quot;по убыванию...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru