不要忘记m可能大于n的情况!!!!
主要思路就是利用不更改数组,只改变输出顺序
java:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=Integer.parseInt(scanner.next());
int m=Integer.parseInt(scanner.next())%n;
String[] s=new String[n];
for(int i=0;i<n;i++)
{
s[i]=scanner.next();
}
for(int i=n-m;i<s.length;i++)
{
System.out.print(s[i]+" ");
}
for(int i=0;i<n-m;i++)
{
if(i==n-m-1)
{
System.out.print(s[i]);
}
else
{
System.out.print(s[i]+" ");
}
}
}
}
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=Integer.parseInt(scanner.next());
int m=Integer.parseInt(scanner.next())%n;
String[] s=new String[n];
for(int i=0;i<n;i++)
{
s[i]=scanner.next();
}
for(int i=n-m;i<s.length;i++)
{
System.out.print(s[i]+" ");
}
for(int i=0;i<n-m;i++)
{
if(i==n-m-1)
{
System.out.print(s[i]);
}
else
{
System.out.print(s[i]+" ");
}
}
}
}
c++:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[105]={0};
int n,m,M,i;
scanf("%d %d",&n,&M);
m=M%n;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=n-m;i<n;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<n-m;i++)
{
if(i==n-m-1)
{
printf("%d",a[i]);
}
else
{
printf("%d ",a[i]);
}
}
return 0;
}