当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
中国菜刀原理与实践
DAY19(DAY20、DAY21拓展):SQL 注入
三元表达式实现多个条件的判断
张乐:研发效能的黄金三角及需求与敏捷协作领域的实践|直播回顾
使用百度EasyDL实现施工人员安全装备检测
蚁剑加密 WebShell 过杀软
数据分析(二)——numpy
552个元宇宙App,70个搞社交,哪款真能交到朋友?
为什么手动启动GBase 8c数据库中GTM节点,起不来。显示“Run cmd failed:scp: /tmp/gtm_gtm1.server: Permission denied”
0代码4步体验物联网设备上云
PostgreSQL V14中更好的SQL函数
软件测试考证:ISTQB、软件评测师
爬虫——代理搭建、爬取视频网站、爬取新闻、BeautifulSoup4介绍、bs4 遍历文档树、bs4搜索文档树、bs4使用选择器
System learning Shell regular expressions
MMA安装及使用优化
Zhang Le: The Golden Triangle of R&D Efficiency and Practice in the Field of Demand and Agile Collaboration|Live Review
“杀猪盘”宰向环球影城
项目管理:PMP和IPMP哪个更值得考?两个证书的区别在于哪里?
线程的状态
树莓派 USB摄像头 实现网络监控( MJPG-Streamer)








![[A summary of the sorting and use of activation functions in deep learning]](/img/c2/abec82f4f1e8ce3c70b6d98b24e7eb.png)
