版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
有M个小孩子围成一圈做游戏,每个小孩子都有一个初始的号码。游戏有X步,每一步的操作方法都相同:每个小孩子把自己手上的号码改写成自己原来的号码加上右手边的小孩子的号码除以100的余数。请问你:经过X步之后,每个小孩子手上的号码是多少? 比如:有3个初始编号为{1,2,3}的小孩子,第一步操作完成之后,他们的编号变成了{1+2,2+3,3+1}即{3,5,4}。
#include<iostream>
#include<cmath>
#define t 10000+10
int a[t],b[t];
using namespace std;
int main()
{
int n,N,X,M;
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>M>>X;
for(int i=1;i<=M;i++) cin>>a[i];
for(int i=1;i<=X;i++)
{
for(int i=1,j=2;i<=M;i++,j++)
{
if(i==M) j=1;
b[i]=a[i]+a[j];
}
for(int i=1;i<=M;i++) a[i]=b[i];
}
for(int i=1;i<=M;i++)
cout<<b[i]<<" ";
cout<<endl;
}
return 0;
}