文章目录

  • 题目描述
  • 思路解析
  • C++实现
  • Python实现

题目描述

  一个数组AAA中存有NNN(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)M( \geq 0)M(≥0)个位置,即将AAA中的数据由(A0A1,⋯,AN−1A_{0}A_{1},\cdots,A_{N-1}A0​A1​,⋯,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−1​A0​A1​⋯,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分)真题解析相关推荐

  1. C++学习之路 | PTA乙级—— 1008 数组元素循环右移问题 (20分)(精简)

    1008 数组元素循环右移问题 (20分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A ​0 ​​ A ​1 ​​ ...

  2. PAT 乙级 1008. 数组元素循环右移问题 (20) Java版

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1--AN-1)变换为(AN-M -- AN-1 A0  ...

  3. 极高效代码(C语言):1008 数组元素循环右移问题 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将 ...

  4. 【PAT乙级】1008 数组元素循环右移问题 (20 分)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808 方法一: 用一个数组保存移动动后的数组 #i ...

  5. 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 ...

  6. 浙江大学PAT上机题解析之1008. 数组元素循环右移问题 (20)

    1008. 数组元素循环右移问题 (20) 时间限制  400 ms 内存限制  32000 kB 代码长度限制  8000 B 判题程序    Standard 一个数组A中存有N(N>0)个 ...

  7. 7-1 数组元素循环右移问题 (20 分)

    7-1 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A​1 ⋯A​N−1​​ ...

  8. 1008. 数组元素循环右移问题 (20)-PAT乙级真题

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...

  9. pat 乙级 1008 数组元素循环右移问题(C++)

    题目 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0 A​1 ⋯A​N−1)变换为(A​N−M​​ ⋯​AN−​​ ...

  10. PAT乙级(1008 数组元素循环右移问题)

    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​ ...

最新文章

  1. javaScript一些函数--Math()
  2. 转载:正则表达式30分钟入门教程
  3. 建立一颗二叉排序树,并删除该二叉排序树上的某个节点
  4. 将 Java 作为入门编程语言有错吗?
  5. pass the URL parameters from the webseite page to Flash
  6. CADisplaylink初解
  7. 3.excel 生成 sql
  8. 面试题算法题 URL化and重新排列字符
  9. python下载numpy库_python怎么下载numpy
  10. c# word 增加段落_word排版技巧:如何防止行距随字号而改变?
  11. 数据结构视频教程 -《数据结构(邓俊辉)》
  12. 多元线性回归预测:餐馆营业额与多因素实战
  13. 常见系统故障修复(二)——修复GRUB引导故障
  14. Python基础教程
  15. STM32智能门锁学习二,RFID刷卡解锁
  16. win7笔记本外接显示器html,笔记本连显示器的步骤_笔记本如何外接显示器-win7之家...
  17. 360高级前端架构师Hax(贺师俊):前端开发编程语言的过去、现在和未来
  18. 磁感应强度、磁场强度、磁动势之三者间的关系
  19. L1-020. 帅到没朋友(2016)
  20. 一、Blender的基础操作

热门文章

  1. 手机网站前端开发经验总结
  2. OSI参考模型(1)
  3. 使用Python调用ASA rest API进行配置
  4. IS-IS详解(五)——IS-IS 三次握手与两次握手
  5. springboot 项目 测试环境在独立的tomcat部署
  6. Android:制作Update.zip升级包 【转】
  7. 【js高三】---js模块模式
  8. 浏览器兼容之旅的第二站:各浏览器的Hack写法
  9. 身为华人,我再一次不淡定了,中文输入项目启动
  10. 二级MYSQL的语法整理_MySQL 常用命令及语法整理