Problem B. 纳西妲数列
Problem B. 纳西妲数列
时间限制:1s
空间限制:256MB
题目背景
"大慈树王"创造了须弥雨林,又通过教令院将智慧赐予国民。即便她与世长辞,其美名也仍在家喻户晓的故事中传唱。对比起全知全能的大慈树王,纳西妲自认还远远担不起"智慧之神"的名号,对国家的治理也是教令院更加驾轻就熟,她的存在并没有那么大的意义 。所以她在净善宫的每一刻都不停在学习,希望尽快成长为一位合格的神明 。
某天她在学习斐波那契数列,看到在自然中各种事物都存在这个数列,感叹于该数列的神奇。在纳西妲的观点中,万事万物都存在着相互联系。于是她将斐波那契数列中的加法关系更改成异或关系,希望也能在某些事物上发现这个关系。不过在此之前,她想求出这个数列任意一项的值。
题目描述
我们将这个数列命名为 纳西妲数列 ( Nahida sequence ),纳西妲是这样定义这个数列的:
\(f(0) = a\);
\(f(1) = b\);
\(f(n) = f(n-1) \oplus f(n-2), n > 1\) (其中 \(\oplus\) 为按位异或\(^\dagger\) )
\(^\dagger\)按位异或:按位异或运算符\(\oplus\)是双目运算符。其功能是参与运算的两数各对应的二进位相异或。只要对应的两个二进制位不同,结果位就为 \(1\) ,否则就为 \(0\) 。例如 \(1 \oplus 14\)=\((0001)_2 \oplus (1110)_2\)= \((1111)_2\) = \(15\) 。
在 C/C++ 中, 可以使用 ^ 来计算异或,即可以用 a ^ b 来计算 \(a \oplus b\) 的值。
现在给你三个整数 \(a, b, n\) ,你能求出 \(f(n)\) 吗?
为了研究规律,你需要回答 \(T\) 组独立的测试数据。
输入格式
第一行一个整数 \(T\) , 代表 \(T\) 组测试数据。
接下来 \(T\) 行,每行三个整数 \(a, b, n\) 。
输出格式
对于每个测试数据,输出 \(f(n)\) 的值,占一行。
输入样例1
2
3 5 2
10 18 20
输出样例1
6
24
样例1解释
在一组测试数据中,\(3 \oplus 5 = 6\),所以答案为 \(6\).
输入样例2
见xor2.in
输出样例2
见xor2.out
数据范围与限制
测试点编号 | 约定 | 测试点分值 |
---|---|---|
\(1\) | \(n = 2\) | 每个测试点10分 |
\(2\) | \(a = b, 0 \le n \le 10^4\) | 每个测试点10分 |
\(3 \sim 4\) | \(0 \le n \le 10^4\) | 每个测试点10分 |
\(5 \sim 10\) | 无特殊约定 | 每个测试点10分 |
对于所有测试点,\(1 \le T \le 10^3\),\(0 \le a,b,n \le 10^9\).
信息
- ID
- 1514
- 难度
- 7
- 分类
- (无)
- 标签
- (无)
- 递交数
- 74
- 已通过
- 15
- 通过率
- 20%
- 被复制
- 1
- 上传者