逆元的乙個坑點 牛客

2022-06-27 03:39:08 字數 989 閱讀 2381

有乙個長度為n的序列a,已知a[1]=a[n]=1,且對於2 <= x <= n,a[x] / a[x-1]是以下三個數字之一 [ 1,-2,0.5 ],問有多少種不同的序列滿足題意。

兩個序列不同當且僅當它們有至少乙個位置上的數字不同,序列a可以為任何實數。

乙個整數 表示n (1<= n <= 1e3)
乙個整數 表示答案模10
9

+7
示例1

複製

5

複製

7

題意 : 給你乙個乙個 n ,表示要構造的序列的長度,問最終有多少種構造序列的方式。

思路分析:注意觀察要構造的序列有個特點,就是第乙個和最後乙個元素都是 1,所以說再變換的過程中,序列擴大和縮小的次數應該是相同的

有個很坑的地方,就是再用逆元求解的時候,分母的兩個數都是取模得來的,應該分別求逆元才對

**示例:

#define ll long long

const ll maxn = 1e6+5;

const ll mod = 1e9+7;

ll pp[1005];

void init()}

ll inv(ll x, ll cnt)

return ans;}

ll c(ll n, ll m)

int main()

printf("%lld\n", sum);

return 0;

方法二:

直接套用組合數學的公式即可。

#define ll long long

const ll maxn = 1e6+5;

const ll mod = 1e9+7;

ll c[1005][1005];

void init()

}}int main()

printf("%lld\n", sum);

return 0;

}

檔案操作中的乙個坑點

筆者在做專案時,遇到乙個有意思的bug,用udp接收裝置傳送的網路資料報,在這個過程中,由於udp的不可靠性,會發生丟包和包亂序的現象,筆者思路將丟失的資料報包號記錄下來,全部用0去填充,然後讓裝置重新傳送資料報。當筆者收到丟失的資料報後,讓它插入到正確的位置,但是,總是感覺插入完成的有問題,總是花...

Python的乙個坑

今天發現了python乙個坑。我們知道python中函式跟c 一樣,可以設定預設引數,比如 def func x,y 1 print x,y func x 10 10 1 y有乙個預設值1,所以函式呼叫的結果是列印10 1 但是如果預設值是這樣的 class food def init self s...

ImmersionBar的乙個坑

今天寫 時發現殺掉activitya 1後再啟動activitya 2時,因為activitya 2的immersionbar先初始化了,之後activitya 1的ondestroy才執行,而關鍵點是發現ondestroy中確實是需要殺掉的activitya 1,而immersionbar也不是單...