C語言,從公升序方冪數列中求得具體項數的值的解法

2021-07-09 09:29:26 字數 836 閱讀 7008

給定乙個正整數

k(3≤k≤

15),

把所有k

的方冪及所有有限個互不相等的

k的方冪之和構成乙個遞增的序列,例如,當

k=3時,這個序列是:1,

3,4,

9,10,

12,13,…

(該序列實際上就是:30,

31,30+31,32

,30+32

,31+32

,30+31+32

,…)

請你求出這個序列的第

n項的值(用

10進製數表示)。

例如,對於

k=3,

n=100

,正確答案應該是

981。

**如下:

#include

#include

void sequence(int number,int subnumber);

int sum=0;

int main(void)

void sequence(int number,int subnumber)

本題思路為:對於i=0,1,2,......對應的以k的i次冪為最大項的數的個數為2的i次冪,故可以通過等比數列公式尋找到第n項中最大的k的次冪,比如當k=3,n=100時,當序列數為3的7次方時已超過100,而序列數為3的6次方時,項數為64,未超過100,故最大項為3的6次冪。

之後,觀察到,在3的6次冪前面的所有項即為按照公升序排列好的序列,故之後的36項可按照同樣的方法找到這36項中的最大次冪。

按照同樣的方法逐次減少項數並尋找到各個項數對應的最大次冪,最後相加即為所求項數的值,顯然,該過程可通過遞迴完成。

C語言 2的次冪表示 冪方分解

藍橋杯練習場上有兩個此類題目 演算法訓練 冪方分解 時間限制 1.0s 記憶體限制 256.0mb 錦囊1遞迴。錦囊2使用乙個函式,遞迴的進行分解,每次分解的時候要將數字先轉換成二進位制。問題描述 任何乙個正整數都可以用2的冪次方表示。例如 137 27 23 20 同時約定方次用括號來表示,即ab...

從算法學起C語言 費氏數列

背景說明 fibonacci為1200年代的歐洲數學家,在他的著作中曾經提到 若有乙隻兔子每個月生乙隻小兔子,乙個月後小兔子也開始生產,起初只有乙隻兔子,乙個月後就有兩隻兔子,兩個 月後就有3只兔子,三個月後就有五隻兔子 小兔子開始投入生產 大 白話文 找規律並求函式表示式 1,1,2,3,5,8,...

C語言從TXT檔案中讀寫資料

下面是乙個簡單檔案讀取測試程式,首先是寫資料,將數字0 9寫入到data.txt檔案中,然後再從data.txt中讀取資料,將讀到的資料存到陣列a 10 中,並且列印到控制台上。下面是程式 cpp view plain copy print?include int main for int i 0 ...