乙個數 幾個數的和

2021-08-19 14:21:27 字數 980 閱讀 4448

斐波那契資料眾所周知如下:

現在給出乙個整數n,請找出n是否可以表示為幾個斐波那契數的總和,這樣總和不包含任何兩個連續的斐波那契數。

輸入 多個測試用例,第一行是乙個整數t(t <= 10000),表示測試用例的數量。

每個測試用例都是乙個整數n(1 <= n <= 109)的行。

產量 每箱一行。

如果答案不存在,則輸出「-1」(不含引號)。

否則,您的答案應格式化為「n = f1 + f2 + ... + fn」。

n表示給定的數字,f1,f2,...,fn表示斐波那契數字,按公升序排列。

如果有多種方式,您可以輸出它們中的任何一種。

示例輸入

4五6

7100

示例輸出

5 = 5

6 = 1 + 5

7 = 2 + 5

100 = 3 + 8 + 89

這道題的題意也很簡單,就是給你乙個數,讓你輸出這個數字是用那些斐波那契數的和所組成的,n的範圍到10^9,也就是第45個斐波那契數左右吧!

打表求得前45個斐波那契數,然後,然後不難發現這些數字的組合有乙個規律,比如100,比他小的第乙個斐波那契數是89,然後100-89=11,比11小的第乙個斐波那契數是8,就這樣,總會找出一些斐波那契數的和與原數相等,儲存在陣列中,輸出~

#include

#include

#include

#include

using namespace std;

int a[46]= ;

int b[46];

void init()

int find(int n)

int main()

printf("%d=%d",n,b[--j]);

for(--j; j>=0; j--)

printf("+%d",b[j]);

printf("\n");}}

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...

找乙個數的因子個數,因子和

1.所有因子個數 如果乙個數是因數,就不斷除這個數,儲存這個因子次方的數 temp 運用所有因子個數計算公式 見上圖 儲存因子個數的 ans不斷乘 temp 1 注意 當最後,在 x 不斷除因數得到的值有兩種情況 x 1,這說明 x 沒有其他因子了。x 1,這時 x 為其乙個素數因子 且這個因子大於...

求乙個數中1的個數

碰到遇到乙個有趣的題,求乙個數二進位制的表示中1的個數,該題有兩種解法,一種是使用短除法將該數直接轉化為二進位制數,另一種比較巧妙的演算法是使用與運算,原理如下圖所示 依照此種思入有如下演算法 int numberof1 solution3 int i return count 依照短處法的思路 有...