游客 Signup | Login
中文 | En

1851 - 课后习题10.4

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。

Input

输入数据的个数n n个整数 移动的位置m

Output

移动后的n个数

Examples

Input

10
1 2 3 4 5 6 7 8 9 10
2

Output

9 10 1 2 3 4 5 6 7 8 

Solution C

#include<stdio.h>
int main ()
{
    int move(int n,int m,int *p);
    int n,m,i,a[1000],*p;
    scanf("%d",&n);
    p=a;
    for(i=0;i<n;i++)
    scanf("%d",&*(p+i));
    scanf("%d",&m);
    move(n,m,p);
    for(p=a;p<a+n;)
    printf("%d ",*p++);
}
int move(int n,int m,int *p)
{
    int i;
    for(i=n-1;i>=0;i--)
    {
        *(p+i+m)=*(p+i);
    }
    for(i=n;i<n+m;i++)
    {
        *p++=*(p+n);
    }
}

Solution C++

#include<bits/stdc++.h>
using namespace std;
long long n,a[1000000],m;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	    cin>>a[i];
	cin>>m;
	for(int i=n-m+1;i<=n;i++)
	    cout<<a[i]<<" ";
	for(int i=1;i<=n-m;i++)
	    cout<<a[i]<<" ";
		
    return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题