问题 3978 --跟随操作(完善程序)

3978: 跟随操作(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 283  解决: 138
[提交][状态][命题人:]

题目描述

某游戏的规则如下:

5位选手的编号为1-5,他们按顺序站在舞台的一边(1号在最左边,5号在最右边),且每个人手上都拿着一个数字牌,上面写着一个数字。5位评委的编号也为1-5,他们站在舞台的另一边,但没有按顺序排好。游戏开始后5秒内,会有两位评委先后蹲下,然后主持人会给出操作命令,编号与蹲下的评委相同的选手要在3秒内根据命令正确地修改自己手上的数字,否则就被淘汰。已知主持人的操作命令分为以下四种(假设编号与先蹲下的评委相同的选手为甲,编号与后蹲下的评委相同的选手为乙):

A:甲乙交换数字;

B:甲的数字加一,乙的数字变为0;

C:甲的数字变为甲乙数字的乘积;

D:乙的数字变为甲乙数字的乘积。

例如,某次游戏中选手的编号、选手手上的数字和评委的编号如下所示

选手     1   2   3   4   5

数字     6   0   3   5   9

评委     3   1   5   2   4

编号为4和3的评委先后蹲下,主持人给出命令,

若为命令A,4号选手将数字改成3,3号选手将数字改成5,五位选手的数字应该变为6 0 5 3 9

#include <iostream>
using namespace std;
int a[6];
int* b[6];
int main()
{
	int x,t1,t2,t;
	char c;
	for(int i=1;i<=5;i++)
		cin>>a[i];
	for(int i=1;i<=5;i++)
	{
		cin>>x;
   		_____(1)______;
	}
	cin>>t1>>t2>>c;
	switch(c)
	{
		case 'A':t=*b[t1]; ______(2)_____;*b[t2]=t;break;
		case 'B': _____(3)_____;*b[t2]=0;break;
		case 'C':*b[t1]*=*b[t2];break;
		case 'D': ______(4)_____;break;
		default:cout<<"Error!";return 0;
	}
	for(int i=1;i<=5;i++)
	   ______(5)______;
	return 0; 
}

输入

第一行 5个整数(空格隔开),表示表示1-5号选手手上拿的数字牌上的数字

第二行 5个整数(空格隔开),为1-5的某种排列,表示1-5号选手对面的评委的编号

第三行 2个1-5之间的整数,1个字符(空格隔开),2个整数表示先后蹲下的两位评委是站在哪两个选手的对面的,1个字符表示主持人给出的命令(为ABCD中的一种)。


输出

一行,表示假设对应选手操作完全正确,这轮游戏后1-5号选手手上拿的数字牌上的数字,中间空格隔开.

如果输入的命令不是ABCD中的一种,则输出”Error!”(不包含双引号).

样例输入
Copy
6 8 9 2 5
2 4 3 5 1
3 4 C
样例输出
Copy
6 8 45 2 5

提示

来源

[提交][状态]