Open 1982827148 opened 2 years ago
#include<iostream> #include<cmath> using namespace std; typedef long long ll; int main() { cin>>n>>m; int a[n]; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n;i++){ int j=i-m%n; //通过公式 i->(i+m )%n实现位置的变换,可以逆转换变换后的a[j]=a[i+kn-m] , if(j<0) cout<<a[j+n]; //这里的k为使kn-m小于0时的最小值,如果其绝对值大于i只需k+1即可,所以可转换为i-m%n判断正负即可 else cout<<a[j]; //下标之间的逆转换只用一个式子即可表达,就cout<<a[(j>0?j:(j+n))] if(i<n-1)cout<<" "; } }