Решение задачи "Большой сдвиг" с Mccme

Без пояснения   Просмотров: 12


Дан список из N ( \(1 \le N \le 100000\) ) целых чисел и число K. Циклически сдвиньте список на K элементов вправо, если K – положительное и влево, если отрицательное число.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    getline(cin, s);
    s.insert(0, " ");
    int pos = s.find(" "), pos1;
    if(s[s.size() - 1] == ' ')
        s.pop_back();
    vector<int> a;
    while(pos + 1){
        pos1 = s.find(" ", pos + 1);
        a.push_back(stoi(s.substr(pos + 1, pos1 - pos - 1)));
        pos = pos1;
    }
    int k;
    cin >>  k;
    if(k > 0){
        k%=a.size();
        for(int i = a.size() - k; i < a.size(); ++i)
            cout << a[i] << " ";
        for(int i = 0; i < a.size() - k; ++i)
            cout << a[i] << ' ';
    }
    else{
        k = abs(k);
        k%=a.size();
        for(int i = k; i < a.size(); ++i)
            cout << a[i] << " ";
        for(int i = 0; i < k; ++i)
            cout << a[i] << ' ';
    }
    return 0;
}

         

 Администратор Photo Автор: Администратор


Код

a = list(input().split())
a = [int(i) for i in a]
k = int(input())
if k > 0:
    k%=len(a)
    for i in range(len(a) - k, len(a)):
        print(a[i], end=" ")
    for i in range(len(a) - k):
        print(a[i], end=" ")
else:
    k = abs(k)
    k%=len(a)
    for i in range(k, len(a)):
        print(a[i], end=" ")
    for i in range(k):
        print(a[i], end=" ")

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться