牛客網OJ 54842 序列(分段多項式轉移方程)

2021-10-02 06:34:46 字數 1271 閱讀 2403

題目

好野。

寫了一發分段多項式。

感覺要想清楚才好寫。

轉移是(定)積分的形式,階乘最後再除也沒問題(要記次數)。

轉移後的常數項,就是ri≤

xr_i\le x

ri​≤

x的部分的貢獻。

a cc

ode\mathrm

accode

#include

#define maxn 405

#define p 998244353

#define rep(i,j,k) for(int i=(j),lim=(k);i<=lim;i++)

#define per(i,j,k) for(int i=(j),lim=(k);i>=lim;i--)

using

namespace std;

intpow

(int b,

int k)

int n,l[maxn]

,r[maxn]

,iv[maxn]

,a[maxn]

;int f[2]

[maxn]

[maxn]

,fac[maxn]

=,inv[maxn]

=,invf[maxn]=;

intcal

(int x,

int i)

intmain()

if(j+

1&& l[i+1]

<=a[j+1]

&& a[j+2]

<=r[i+1]

) f[now]

[j+1][

1]=(f[now]

[j+1][

1]+ s *

1ll*

cal(a[j+2]

-a[j+1]

,i+1))

% p;}}

int ans =0;

rep(j,

1,a[0]

-1)rep

(k,1

,n) ans =

(ans +

1ll* f[now]

[j][k]

* invf[k]

)% p;

printf

("%d\n"

,(ans+p)

%p);

}

牛客網 進製轉換oj

題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入描述 輸入為一行,m 32位整數 n 2 n 16 以空格隔開。輸出描述 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 示例1輸入 7 2...

牛客網 數串

設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。如 n 3時,3個整數13,312,343,連成的最大整數為34331213。如 n 4時,4個整數7,13,4,246連線成的最大整數為7424613。有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n n 100 第二行包含n個數 ...

牛客網 數串

設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。如 n 3時,3個整數13,312,343,連成的最大整數為34331213。如 n 4時,4個整數7,13,4,246連線成的最大整數為7424613。有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n n 100 第二行包含n個數 ...