当前位置:网站首页>PAT乙级-B1008 数组元素循环右移问题(20)
PAT乙级-B1008 数组元素循环右移问题(20)
2022-08-03 14:20:00 【nekoha_dexter】
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
#include<vector>
using namespace std;
int N, M;
vector<int> a;
//1、用vector存放数组
//2、确定第一个输出的下标,如循环往右移动2位,即队首下标从0变成4
//2.1输出队首下标~N-1的元素,如输出5、6
//2.2输出下标0~队首下标-1的元素,如输出1、2、3、4
//最终即5 6 1 2 3 4
int main(){
cin >> N >> M;
a.resize(N);
for(int i = 0; i < N; ++i)
cin >> a[i];
int f = (N - M%N) % N;//确定队首位置
//输出队首下标~N-1的元素
cout << a[f];
for(int i = f + 1; i < N; ++i)
cout << " " << a[i];
//输出0~队首-1的元素
for(int i = 0; i < f; ++i)
cout << " " << a[i];
return 0;
}
边栏推荐
猜你喜欢
随机推荐
Forrester:行业云帮助中国企业更快适应未来的发展
豪威集团发布新款5000万像素图像传感器OV50E
MATLAB中writetimetable函数用法
哥斯拉加密WebShell过杀软
基于.NET 6 的开源访客管理系统
APT组织最喜欢的工具 Cobalt Strike (CS) 实战
C语言中操作符的详细介绍
图形学-粒子系统 (Particle System)
三元表达式实现多个条件的判断
回流和重绘
leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
chrome浏览器对应驱动_chrome手机浏览器
MySQL【存储过程与函数】
STL简介
GMapping原理分析[通俗易懂]
Top 10 free proxy IP software_Domestic static IP proxy software
HCIP Day 16 Notes (SVI, Spanning Tree Protocol)
LeetCode15:三数之和
网易互娱在秒级监控、服务限流、AIOps落地上的运维升级实践
GMapping principle analysis/easy to understand









