我正在編寫一個程序,我在編碼競爭網站上找到了,我有點想通了如何解決這個問題,但是,我被卡在數學部分,我完全稀釋問題和展示我需要什麼。支票號碼目前在一個序列中
首先我需要檢查一個數是否是序列的一部分,我的序列是2*a+1
其中a是序列中的前一個元素或2^n-1以獲得序列中的第n個元素。所以它是1,3,7,15,31,63 ...
我真的不想創建整個序列,並檢查是否存在一個數字,但我不知道什麼更快方法來做到這一點。
第二,如果我給了一個數字可以說25,我想找出序列中的下一個最高的數字,這個數字。因此,對於25,它將是31,對於47,它將是63,對於8將是13.
我怎樣才能做到這些東西,而無需創建整個序列。
我在這裏看到了類似的問題,用不同的序列,但我仍然不知道如何解決這個
序列總是「係數* n +偏移」嗎?然後它非常容易,可以在不斷的時間複雜度下完成。 – Zeta 2013-03-02 05:10:25
你可以看到'n + 1'是否是2的冪。 – Blender 2013-03-02 05:11:08
@Blender你的編輯看起來不正確。序列1,3,7,15是2 * a + 1,其中'a'是序列中的前一個數字。 – 2013-03-02 05:12:30