Skip to content

Latest commit

 

History

History
100 lines (100 loc) · 2.22 KB

做游戏.md

File metadata and controls

100 lines (100 loc) · 2.22 KB

做游戏

description

有M个小孩子围成一圈做游戏,每个小孩子都有一个初始的号码。游戏有X步,每一步的操作方法都相同:每个小孩子把自己手上的号码改写成自己(原来的号码加上右手边的小孩子的号码)除以100的余数。请问你:经过X步之后,每个小孩子手上的号码是多少? 比如:有3个初始编号为{1,2,3}的小孩子,第一步操作完成之后,他们的编号变成了{1+2,2+3,3+1}即{3,5,4}。 input
输入有N组测试数据。每组测试数据有2行: 第一行包含M和X。 第二行包含M个不超过100的整数。
output
输出数据有N行,每行是一组测试数据的结果。注意:两个数字之间只有一个空格。每行以一个空格结尾

代码实现

#include<iostream>
using namespace std;
int main()
{
	int n;  //n组数据
	cin>>n;
	while(n--) 
	{
		int m,x;  //每组m个小孩,执行x次
		cin>>m>>x;
		int a[m],b[m];  //a[]用来计算,b[]用来记录上一次的数据,两个数组以此避免数组混乱
		for(int i=0;i<m;i++)
		cin>>a[i];
		while(x--) //执行x次
		{
			for(int i=0;i<m;i++)
			    b[i]=a[i];
			for(int i=0;i<m-1;i++)
			    a[i]=(a[i]+b[i+1])%100;
			a[m-1]=(a[m-1]+b[0])%100;
		}
		for(int i=0;i<m;i++)
		cout<<a[i]<<" ";
		cout<<endl; //每组数据处理后要加空格
	} 
	return 0;
}

错误代码一

#include<iostream>
using namespace std;
int main()
{
	int n;
		cin>>n;
	while(n--){
		int m,x;
		cin>>m >>n ;
		int a[m],temp;
		for(int i=0;i<m;i++)
			cin>>a[i] ;
		while(x--){	
			temp=a[0];
			for(int j=0;j<m-1;j++)
			{
					a[j]=(a[j]+a[j+1])%100;
				a[j]=(a[j]+temp)%100;	
			}
		}
		for(int k=0;k<m;k++){
			cout<<a[k]<<" ";
		}
		cout<<endl;
	}
	return 0;
 }

错误代码二

#include<iostream>
#include<stdio.h> 
using namespace std;
int main()
{
	int n;
		scanf("%d ",&n);
	while(n)
	{
		n--;
		int m,x;
			scanf("%d %d ",&m,&x);
		int a[m],b[m];
		for(int i=0;i<m;i++)
			scanf("%d ",&a[i]);
		while(x) 
		{
			x--;
			for(int i=0;i<m;i++)
			    b[i]=a[i]%100;
			for(int i=0;i<m-1;i++)
			    a[i]=a[i]+b[i+1];
			a[m-1]=a[m-1]+b[0];
		}
		for(int i=0;i<m;i++)
			printf("%d ",a[i]);
		printf("\n");
	} 
	return 0;
}