TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  问题讨论与解答  统计信息与排名
  • 首页
  • 题库
  • P3762
  • 题目
  • P3762守夜人
    限制 : 时间限制 : - MS   空间限制 : 65536 KB
    评测说明 : 时限1000ms
    问题描述

    鉴于john snow当选了新的守夜人总司令,艾里沙爵士感觉非常不爽,想搞点事情来难倒snow。艾里沙爵士告诉你有一个n项的序列X0,X1,X2.....Xn-1。(其中每一项均在int范围之内)但是你现在不知道其中的任何一项。艾里沙会逐步的告诉你一些信息并且问你一些问题。共有两种类型的信息和一种类型的询问。

    I p v :    告诉你 Xp = v

    I p q v :   告诉你 Xp XOR Xq = v

    Q k p1 p2 . . . pk : 询问Xp1 XOR Xp2 XOR . . . XOR Xpk的值  k≤15

    输入格式

    会有多组测试数据但不会超过10组。
    每一组数据以两个整数开始:n , Q(1 ≤ n ≤ 20, 000, 2 ≤ Q ≤ 40, 000)题目描述中的k是一个不大于15的整数。
    最后一组数据为n==Q==0,不用进行运算。

    输出格式

    对于每组数据,输出第一行为数据的组数,接下来的每一行对应一次询问的答案。
    如果根据前面给出的信息无法算出答案,则输出“I don't know.
    如果与已知信息冲突,输出“The first i facts are conflicting.”,并结束对于这一组数据的运算,其中i为这组数据出现过的的信息条数(不含询问,包含当前这一条信息)。
     

    样例输入

    2 6
    I 0 1 3
    Q 1 0
    Q 2 1 0
    I 0 2
    Q 1 1
    Q 1 0
    3 3
    I 0 1 6
    I 0 2 2
    Q 2 1 2
    2 4
    I 0 1 7
    Q 2 0 1
    I 0 1 8
    Q 2 0 1
    0 0

    样例输出

    Case 1:
    I don’t know.
    3
    1
    2
    Case 2:
    4
    Case 3:
    7
    The first 2 facts are conflicting.

    提示

    注释:

    鉴于两种I操作的输入比较麻烦,这里给出一种参考输入方法:

    gets(s);

    if(sscanf(s,"%d%d%d",&a,&b,&v)==2)

    //这一行输入了两个整数,要先除去行首的字母

    {

    ...

    }


    来源  老王