周易与中国文化

周易与中国文化

Time Limit: 2 Seconds      Memory Limit: 65536 KB      Score: 1

问题描述

Banlk 的室友选修了《周易与中国文化》这节有名的通识课程,还未开课,室友便开始自己研究起了八卦的奥秘。

一天晚上,Banlk 看见正在研究卦象的室友眼中闪过一道精光,突然站起身来,头也不回地朝阳台上走去。只见窗外刚才还是晴空万里,突然就是一阵电闪雷鸣,待 Banlk 回过神来,室友早已消失无形。

震惊之余,Banlk 在舍友的书桌上发现了一本笔记,笔记上是舍友演算卦象的过程:每次演算舍友都会把 n (n ≥ 2) 个卦象,通过某种运算方式算出作为答案的一个卦象;值得注意的是,这 n 个卦象的顺序与结果无关。笔记的封面赫然写着六个大字:“阳爻连,阴爻断!”

Banlk 认为想要找出舍友的所在,有必要掌握这种神秘的运算;你能通过舍友残存的笔记,猜出运算的规律吗。

输入格式

第一行一个整数 T (1 ≤ T ≤ 100),表示数据组数;

接下来的 T 行,每行以一个整数 n (2 ≤ n ≤ 100) 开头,表示此次演算用到的卦象总数,随后有 n 个字符串,对应所用卦象的英文名称(用一个空格隔开)。

输出格式

输出共 T 行,每行一个字符串,即答案卦象的英文名。

样例输入

3
2 Sky Lake
2 Fire Water
4 Thunder Earth Lake Water

样例输出

Mountain
Sky
Earth

样例解释

相信同学们定能参透此中奥秘。

猜谜题
每个卦三根横线就是三个数
最后异或就好了

#include<stdio.h>
#include<string.h>
int P[8][3]=
{
	{1,1,1},
	{0,1,1},
	{1,0,1},
	{0,0,1},
	{1,1,0},
	{0,1,0},
	{1,0,0},
	{0,0,0},
};
char T[8][10];
int ans[3];
int id[105];
int main()
{
	strcpy(T[0],"Sky");
	strcpy(T[1],"Lake");
	strcpy(T[2],"Fire");
	strcpy(T[3],"Thunder");
	strcpy(T[4],"Wind");
	strcpy(T[5],"Water");
	strcpy(T[6],"Mountain");
	strcpy(T[7],"Earth");
	int t;int a,b,c,d,e;char O[100];
	scanf("%d",&t);
	for(d=1;d<=t;d++)
	{
		scanf("%d",&e);
		for(a=1;a<=e;a++)
		{
			scanf("%s",O);
			for(b=0;b<=7;b++)if(strcmp(T[b],O)==0){id[a]=b;break;}
		}
		for(a=1;a<=e;a++)
		{
			ans[0]^=P[id[a]][0];
			ans[1]^=P[id[a]][1];
			ans[2]^=P[id[a]][2];
		}
		for(a=0;a<=7;a++)
		{
			if(ans[0]!=P[a][0])continue;
			if(ans[1]!=P[a][1])continue;
			if(ans[2]!=P[a][2])continue;
			printf("%s\n",T[a]);break;
		}
		ans[0]=0;ans[1]=0;ans[2]=0;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值