1+2=3?
题目
输入一个T,接下来T行,每行一个N,输出满足 x异或2x== 3x 的第N个数字。
T<=100,N<=1e12
思路
打了表,整数数列百科全书中找到符合规律的数列,观察二进制形式后发现:
斐波那契数列:
1 2 3 5 8 13 21 34 55 ……
题中若N=60,则60= 55 + 5 (第9项+第4项)
则第60个满足条件的数为:1(9)00001(4)000 = 264 (4、9号位数为1,其他都是0)
由于1e12小于斐波那契的第59项,故开一个59大的数组,里面存斐波那契数,然后对于每一个N寻找最少的组成它的斐波那契数,找到他是第x项,那么ans+2^x即可。
(问题是我的代码怎么这么丑= =)
看!代码
1 |
|