我正在编写一个在编码竞赛网站上找到的程序,我已经想出了如何解决这个问题,但是,我被困在其中的数学部分,我完全淡化了这个问题并展示了我需要什么。
首先我需要检查一个数字是否是序列的一部分,我的序列是2*a+1
其中 a 是序列中的前一个元素或 2^n-1 以获得序列中的第 n 个项目。所以它是1,3,7,15,31,63 ...
我真的不想创建整个序列并检查是否存在数字,但我不确定执行此操作的更快方法是什么。
其次,如果给我一个数字,比如说 25,我想找出我的序列中的下一个最高数字到这个数字。因此,对于 25,它将是 31,对于 47,它将是 63,对于 8,它将是 13。
我怎么能在不创建整个序列的情况下做这些事情。
我在这里看到了不同序列的类似问题,但我仍然不确定如何解决这个问题