/*
这道题的大意是:
先在第一行输入接下来每行的数字的个数(n)
第二行是一个用来和之后序列做比较的一个序列——即接下来的序列都是和他比较
后面的任意多行都要和第二行做比较,直到碰到全都是0的序列为止
(但是题目说序列中只会出现1-9,所以只要第一个数字是0,我们就可以认为结束了。)
然后再次输入每行数字的个数,直到你输入0为止。
比较规则:
前一个输出的数字是基准序列和需比较序列在相同的位置有相同数字的数字的个数
后一个输出的数字是两个序列都出现过但位置不相同的数字的个数
*/
#include <iostream>
#include <stdio.h>
#define MAXN 1010//序列的最大长度
using namespace std;
int answer[MAXN];//基准序列
int match[MAXN];//各个比较序列
int temp[MAXN];//基准序列的副本,因为需要对这个副本的值进行操作
int main(void)
{
int n, k = 1;//k是为了控制格式
while (scanf_s("%d", &n) != EOF && n)//n为0时结束
{
printf("Game %d:\n", k++);//格式需要
for (int i = 0; i < n; i++)
scanf_s("%d", &answer[i]);//基准序列的输入
while (true)
{
int a = 0, b = 0;//a和b分别是两种情况的次数
for (int i = 0; i < n; i++)
temp[i] = answer[i];//建立副本后,temp的值可以随意更改
for (int i = 0; i < n; i++)
scanf_s("%d", &match[i]);//输入当前需比较的序列
if (!match[0])
break;//如果比较序列的第一个值为0,我们就认为每一个值都是0
for (int i = 0; i < n; i++)
if (match[i] == temp[i])
{//对应位置相同
match[i] = temp[i] = 0;//这里要记得把这两个处理过的数据消除掉——化为0
a++;
}
for (int i = 0; i < n; i++)
{//两个序列都出现过,但位置不同。这里需要注意的是,之前因对应位置相同消去的数据是不需要重复计算的
if (match[i])//如果需比较序列为非零数字
for (int j = 0; j < n; j++)//就和基准序列的每一个数比较
if (match[i] == temp[j])
{
b++;//如果基准序列中出现一个和当前需比较数据相同的值
match[i] = temp[j] = 0;//两个位置同时清楚——化为0
break;//并且退出当前循环
}
}
printf(" (%d,%d)\n", a, b);//按照格式输出,之前有四个空格
}
}
return 0;
}