計算等差數列之和

2021-09-07 02:17:03 字數 622 閱讀 4537

題目:求1+2+…+n,

要求:不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(a?b:c)。

先來看看解題的演算法過程:

解釋一下吧!

學過計算機技術的人都知道,書上在很靠前的位置總會有這麼一句話,2進製下乘法就是錯位相加。這就是原理。int有32個bit位,我就把這錯位相加寫32次。其實就是乘法。這個的演算法效率比遞迴快。遞迴o(n),這個o(1),**多又怎樣?使用者又看不出來。

還有其他思路沒?

能用乘除更簡單,可以使用求等差數列公式求和公式sn=n(a1+an)/2 或sn=na1+n(n-1)d/2       (具體過程請自己查相關資料)

求等差數列的前n項和公式n*(n+1)/2,既然二進位制乘法是加法,把n*(n+1)/2轉換成二進位制計算不就更簡單點麼,以上思路留著大家思考,或等我將來再嘗試著實現。

出處:qq演算法群聊天記錄

等差數列末項計算

總時間限制 1000ms 記憶體限制 65536kb 描述給出乙個等差數列的前兩項a1,a2,求第n項是多少。輸入一行,包含三個整數a1,a 2,n。100 a1,a 2 100,0 n 1000。輸出乙個整數,即第n項的值。樣例輸入 1 4 100樣例輸出 298 奧數典型題舉一反三 小學五年級 ...

codevs等差數列

題目描述 description 給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過10000000.輸出描述 output descr...

網易等差數列

如果乙個數列s滿足對於所有的合法的i,都有s i 1 s i d,這裡的d也可以是負數和零,我們就稱數列s為等差數列。小易現在有乙個長度為n的數列x,小易想把x變為乙個等差數列。小易允許在數列上做交換任意兩個位置的數值的操作,並且交換操作允許交換多次。但是有些數列通過交換還是不能變成等差數列,小易需...