#P1033. 永恒冰封的禁忌山脉(插曲)
永恒冰封的禁忌山脉(插曲)
背景
“至少在深入冷原以前,我们在雪域中发现诸多聚落。他们保持着原始的样貌,长久地与世隔绝,同咆哮的暴风雪作沉默的对抗。科学技术尚未在这些部族中普及,但面对这片残酷的土地,他们有自己的生存之道。
……
冷原上的聚落向他们的祖先占卜吉凶、寻求建议。若卜相可喜,长期同严寒战斗的他们也会露出久违的笑容。而若祖灵的远视洞见了悲惨的结局,在苦苦地询问中得不到建议或答案,那么这些天生的战士将骄傲而沉默着领受他们的命运。”
——前科考队遗留的笔记
“你们是维塔娇德的客人,我会尝试向先灵询问你们的乌尔鲁克。”本地的司卜人这样告诉你。她用你的语言磕磕绊绊地表达了占卜的邀请,夹杂着两个含糊而难以理解的本地词汇。
身为文明世界的探索者,你崇尚科学,然而占卜师盛情难却,出于对本地文化的尊重,你决定恭敬不如从命。
未来的你想起她的占卜,也许会苦笑着发现,她不幸言中了。
题目描述
随机抽取的36块密文板上被分为3组,每块密文板上有一个数字,随后,将这些数字作如下操作:
第一步
将第1、3组密文板上的数字自小到大排序,将第2组数字自大到小排序
第二步
对于每一个数字,如果它是奇数,改为1;如果它是偶数,改为0.
第三步
将经第一步操作的每行12个数字以8421BCD码方法解读。
最后,将你命运的三个三位数写在纸上,交给司卜人。
接口定义
冷原聚落族群对这些树皮密文板有着特殊的崇拜和保护,你不可以直接操作这些密文板。
在编译文件中包含一个数组
int ciphertext[3][12];
输入的密文板数据会被保存在这个数组中,
不可以直接操作ciphertext数组,否则会遭到族群的攻击!
你将拥有一个定义的行指针扫描仪。
int (*p)[12];
利用扫描仪获取的行数据来完成任务。
得到三个三位数后,将它们传入定义的result数组。
int result[3];
接口
void Ciphertext_Handler(int (*p)[12], int *result);
你只需要编写此函数的相关代码。
你的文件里可以编写其他辅助函数,但这些函数只能在Ciphertext_Handler函数中被调用。
Format
Input
输入共36个数据,代表密文板上的数字。这些数字会被自动存储在ciphertext数组中,你的行指针扫描仪初始时刻会自动指向该数组的第一行,行指针扫描仪已作为函数输入变量存在。
Output
司卜人根据你交给她的三个三位数告知占卜结果。因此需要在函数Ciphertext_Handler中将三位数结果存入result数组所在的连续地址,该地址同样作为函数输入变量存在。
Samples
-866 -102 -57 2 10 59 100 150 2009 2020 2022 2023
-760001 500 600 701 2500 2901 20356 20358 50001 120000 120002 7000001
1 2 4 6 8 9 10 11 12 13 14 15
人类短视地深入
Limitation
1s, 1024KiB for each test case.
对于100%的数据,$ -16777216 \leq ciphertext[i][j] \leq 16777216, 0 \leq i \leq 2, 0 \leq j \leq 11.$
??的格式检查
"别操心这个。"