【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)
生活随笔
收集整理的這篇文章主要介紹了
【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
鏈接:https://ac.nowcoder.com/acm/contest/551/F
來源:??途W
?
題目描述
CSL 有一個神奇的無窮實數序列,他的每一項滿足如下關系:
對于任意的正整數 n ,有 ?, 并且 。
CSL 很清楚這樣的序列是唯一的,他現在想考考你,你能快速告訴他這個序列的第 n 項是多少嗎?
為了不讓你感到難過,對每次詢問你只要輸出 倍的 對 998244353 取模后的結果即可。
輸入描述:
第一行有兩個整數 w 和 q ,其中 w 的含義如題意所述, q 表示接下來的詢問次數。接下來的 q 行,每行輸入一個數 n 。
輸出描述:
對于每一次詢問, 在一行輸出一個整數 v ,表示示例1
輸入
復制
1 2 1 2輸出
復制
1 3解題報告:
? 先預處理了2的冪次和階乘,然后直接推公式發現沒啥規律,但是把這個東西乘到推出來的公式里,就發現了規律。發現前幾項分別是1,3,15,105,945,咦這樣一看也沒啥規律啊,但是拆開看,就是:1 , 1*3 , 1*3*5 , 1*3*5*7 , 1*3*5*7*9。。。當然這只是系數,后面還要乘個w。
? 不過這題其實是可以用母函數的知識證明的
?
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define ll long long #define pb push_back #define pm make_pair using namespace std; const int MAX = 2e6 + 5; ll ans[MAX]; const ll mod = 998244353; int main() {ans[1] = 1;for(int i = 2; i<=1000000; i++) {ans[i] = ans[i-1] * (2LL*i - 1);ans[i] %= mod;}ll w,q,x;cin>>w>>q;while(q--) {scanf("%d",&x);printf("%lld\n",(ans[x]*w)%mod);}return 0 ; }?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HDU - 5876】Sparse G
- 下一篇: 小哥凭“量子速读”绝技吸粉59万:看街景