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

Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз

29.07.2016, 14:10. Показов 1919. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Циклическим сдвигом вправо последовательности называется последовательность, получаемая из исходной перемещением последнего элемента в начало. Заданы числа N и k и последовательность целых чисел длины N. Вывести результат последовательного применения циклического сдвига вправо данной последовательность ровно k раз.

Вход
5 2
1 2 3 4 5

6 1
7 1 7 2 6 1

5 5
9 100 6 0 1

3 1000
9 1 2


Выход
4 5 1 2 3
1 7 1 7 2 6
9 100 6 0 1
2 9 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2016, 14:10
Ответы с готовыми решениями:

Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Проверьте пожалуйста, правильное ли решение. Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево (все биты...

Функция циклического сдвига побитово вправо
Форумчане, приветствую! Подскажите почему не работает сдвиг вправо? Программа компилируется, но сдвига не происходит. Сверился с...

Напишите функции для циклического сдвига слова влево и вправо
Нужно использовать SHL и SHR для сдвига? Не очень понятно как определить в какой момент нужно прекращать сдвиги?

10
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
29.07.2016, 14:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<vector>
using namespace std;
int main() {
 
    while (true) {
        int n, k;
        cin >> n >> k;
        vector<int> v(n);
        for (int i = 0; i < n; ++i)
            cin >> v[i];
        for (int i = 0; i < k; ++i) {
            int temp = v[n - 1];
            for (int j = n-1; j >0; --j)
                v[j] = v[j - 1];
            v[0] = temp;
        }
        for (int i = 0; i < n; ++i)
            cout << v[i] << " ";
        cout << endl << endl;
    }
    return 0;
}
1
29.07.2016, 14:46

Не по теме:

shilko2013, простите, это вы писали тест на "знание С++" или другой участник с похожим ником и аватаром? Просто мне трудно представить совмещение "знаний С++" и полного пренебрежения к тривиальной оптимизации алгоритмов...

0
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
29.07.2016, 14:58
_Ivana, Не для себя же пишу

Добавлено через 6 минут
Я конечно мог перевернуть как-то так.
k = 5;
1234|56789
4321|56789
4321|98765
и свайпнуть 1 и n, 2 и n-1, но мне лень было заморачиваться)
56789|1234

Добавлено через 58 секунд
P.S И тут не знания С++ нужны, а знания алгоритмов...
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.07.2016, 15:02
Цитата Сообщение от shilko2013 Посмотреть сообщение
Не для себя же пишу
Ваша позиция ясна, спасибо.
ЗЫ порадовали вы меня немного, после теста по С++
0
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
29.07.2016, 15:03
_Ivana, Теперь хоть сумму арифметической прогрессии по формуле считаю иногда)
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.07.2016, 15:05
shilko2013, ага, я видел - через флоаты Хотя если ТС халявщик - можно хоть специально неоптимальные алгоритмы писать
0
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
29.07.2016, 15:07
_Ivana, Пусть препод поругает)
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
29.07.2016, 15:15
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 <vector>
#include <algorithm>
using namespace std;
int main() {
    int n,k;
    cin>>n;
    cin>>k;
    vector<int>val;
    for(vector<int>::size_type i=0; i!=n; i++) {
        int a;
        cin>>a;
        val.push_back(a);
    }
    for(vector<int>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<*iter<<" ";
    }
    cout<<endl;
    for(int i=0; i!=k; i++) {
        rotate(val.rbegin(),val.rbegin()+1,val.rend());
    }
    for(vector<int>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<*iter<<" ";
    }
    return 0;
}
1
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
29.07.2016, 15:17
Peoples, Мне кажется, ТС этого еще не проходил
1
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 10
29.07.2016, 15:27  [ТС]
shilko2013, Да не проходил но все равно всем СПАСИБО!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2016, 15:27
Помогаю со студенческими работами здесь

Определить функцию для циклического сдвига списка вправо на один элемент
Дан список. Определить функцию для циклического сдвига списка вправо на один элемент. Использовать только базис Лиспа. Самым простым...

Получить результат циклического сдвига элементов списка на K позиций влево
Доброго времени суток. Не могли бы вы мне помочь решить несколько задач на прологе. Очень долго уже ломаю голову: Задачи на работу со...

Осуществление циклического сдвига элементов прямоугольной матрицы на n элементов вправо
помогите пожалуйста....

Ошиба циклического сдвига
Вот задание. Дана действительная квадратная матрица порядка n. 1) осуществить циклический сдвиг элементов прямоугольной матрицы на N...

Функция Циклического сдвига
Уже несколько дней мучаюсь никак не могу организовать функции циклического сдвига. Необходимо выполнить циклический сдвиг в квадратной...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru