J - Rolling Encryption
题意: 给定n(原序列长度),m(加密序列长度),k(数的范围)。按题目中的要求对原数列进行加密序列的操作。按题目的要求一步步写就可。题目中已经保证了只进行一次单向的操作,(题中i<=n-m+1).故对于X序列和Y序列,都不会产生滚动操作。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=2010;
int a[N],b[N];
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
int ans=n-m+1;//存放总的操作步数
int hh=0;
//hh严格小于等于m
for(int i=1;i<=ans;i++){
int re=i+m-1;
for(int j=i;j<=re;j++){
a[j]=(a[j]+b[++hh])%k;
}
hh=0;
}
for(int i=1;i<n;i++)cout<<a[i]<<" ";
cout<<a[n]<<endl;
return 0;
}