链接:
题目描述
小Y在研究数字的时候,发现了一个神奇的等式方程,他屈指算了一下有很多正整数x满足这个等式,比如1和2,现在问题来了,他想知道从小到大第N个满足这个等式的正整数,请你用程序帮他计算一下。
(表示按位异或运算)
输入描述:
第一行是一个正整数,表示查询次数。
接着有T行,每行有一个正整数,表示小Y的查询。
输出描述:
对于每一个查询N,输出第N个满足题中等式的正整数,并换行。
输出
12418 把数字转化二进制,那么n<<1时,必须保证1的前一位为0,呢么依次类推1 10 101 1000 1001 1010 10000 10001 10010.... 若把满足的数,并且二进制位数相等的保存下来,呢么满足斐波那契数列(可以手推) 因此保存斐波那契前58项的前缀和,每次在区间里比较,不断确定其所具有的最大进制位,然后减去(前缀和加1)(二进制中末尾全0特判) 依次类推,直到n<=0
#include #include #include #include #include #include #include #include #include #include #include #include #include