【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析
文章目录
- 题目描述
- 思路解析
- C++实现
- Python实现
题目描述
一个数组AAA中存有NNN(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)M( \geq 0)M(≥0)个位置,即将AAA中的数据由(A0A1,⋯,AN−1A_{0}A_{1},\cdots,A_{N-1}A0A1,⋯,AN−1)变换为(AN−M⋯AN−1A0A1⋯,AN−M−1A_{N-M}\cdots A_{N-1}A_{0}A_{1} \cdots ,A_{N-M-1}AN−M⋯AN−1A0A1⋯,AN−M−1) (最后MMM个数循环移至最前面的MMM个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)N(1≤N≤100)N(1≤N≤100)和M(≥0)M( ≥0)M(≥0);第2
行输入NNN个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移MMM位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
思路解析
一开始我的想法就是将M-N
个数据(也就是前面的数据存储起来,因为往后挪的话,后面的数据会跑到前面先输出,比如样例中的5,6,所以1,2,3,4就需要先存储起来),也就是创建一个M-N
的数组,用于最后输出。
还要考虑M≥NM\geq NM≥N的情况,这里采用M=M%NM=M\%NM=M%N的方式解决。如果是NNN的整数倍的话就全部要存入数组M_num
中,否则的话就只需要存储前面需要挪到后面的M-N
个数。
最后一个是无空格的,所以在输出数组的最后一个元素时要分开判断一下。
C++实现
#include<stdio.h>int main(){int N,M;scanf("%d %d", &N, &M);M = M%N;int input_num;int M_num[N-M];for(int i=0; i<N; i++){scanf("%d", &input_num);if(i<(N-M)){M_num[i] = input_num;}else{printf("%d ", input_num);}}for(int j=0; j<(N-M);j++){if(j==N-M-1){printf("%d", M_num[j]);}else{printf("%d ",M_num[j]);}}return 0;
}
Python实现
·python·实现的话就可以直接用数组切片操作了。
N_M = input().split(" ")
input_num = input().split(" ")N = int(N_M[0])
M = int(N_M[1])M = M%N
input_num = input_num[N-M:]+input_num[:N-M]for i in range(N):if i == N-1:print(input_num[i], end="")else:print(input_num[i], end=" ")
【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析相关推荐
- C++学习之路 | PTA乙级—— 1008 数组元素循环右移问题 (20分)(精简)
1008 数组元素循环右移问题 (20分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A 0 A 1 ...
- PAT 乙级 1008. 数组元素循环右移问题 (20) Java版
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1--AN-1)变换为(AN-M -- AN-1 A0 ...
- 极高效代码(C语言):1008 数组元素循环右移问题 (20分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将 ...
- 【PAT乙级】1008 数组元素循环右移问题 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808 方法一: 用一个数组保存移动动后的数组 #i ...
- 1008 数组元素循环右移问题 (20分)
输入样例: 6 2 1 2 3 4 5 6 输出样例: 5 6 1 2 3 4 # -*- coding: utf-8 -*- import mathdef right_shift(lst, m):n ...
- 浙江大学PAT上机题解析之1008. 数组元素循环右移问题 (20)
1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个 ...
- 7-1 数组元素循环右移问题 (20 分)
7-1 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1 ⋯AN−1 ...
- 1008. 数组元素循环右移问题 (20)-PAT乙级真题
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...
- pat 乙级 1008 数组元素循环右移问题(C++)
题目 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0 A1 ⋯AN−1)变换为(AN−M ⋯AN− ...
- PAT乙级(1008 数组元素循环右移问题)
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1 ...
最新文章
- javaScript一些函数--Math()
- 转载:正则表达式30分钟入门教程
- 建立一颗二叉排序树,并删除该二叉排序树上的某个节点
- 将 Java 作为入门编程语言有错吗?
- pass the URL parameters from the webseite page to Flash
- CADisplaylink初解
- 3.excel 生成 sql
- 面试题算法题 URL化and重新排列字符
- python下载numpy库_python怎么下载numpy
- c# word 增加段落_word排版技巧:如何防止行距随字号而改变?
- 数据结构视频教程 -《数据结构(邓俊辉)》
- 多元线性回归预测:餐馆营业额与多因素实战
- 常见系统故障修复(二)——修复GRUB引导故障
- Python基础教程
- STM32智能门锁学习二,RFID刷卡解锁
- win7笔记本外接显示器html,笔记本连显示器的步骤_笔记本如何外接显示器-win7之家...
- 360高级前端架构师Hax(贺师俊):前端开发编程语言的过去、现在和未来
- 磁感应强度、磁场强度、磁动势之三者间的关系
- L1-020. 帅到没朋友(2016)
- 一、Blender的基础操作