PAT (Basic Level) Practice 1008 数组元素循环右移问题

乙级1008

在这里插入图片描述

输入M的向右移,如果M>N的话肯定是有重复项,多出来的就应该去掉,不难发现有一定的规律,可以将M先减少到小于N的数量先,这样就可以从m到n循环,0到m循环依次输出

代码实现:

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
	int n,m;
	int num[101];
	for(int i = 0;i<101;i++){
		num[i] = 0;
	}
	cin>>n>>m;
	for(int i = 0;i<n;i++){
		cin>>num[i];
	}
	while(m){
		if(m/n==0)
			break;
		m = m%n;
	}
	int isfirst = 1;
	for(int i = n-m;i<n;i++){
		if(isfirst){
			cout<<num[i];
			isfirst = 0;
		}else{
			cout<<' '<<num[i];
		} 
	}
	for(int i = 0;i<n-m;i++){
		if(isfirst){
			cout<<num[i];
			isfirst = 0;
		}else{
			cout<<' '<<num[i];
		} 
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/a656418zz/article/details/83154297
今日推荐