qaq…
很明顯我們是可以搞一下指數生成函式的…
然而複雜度是o(
m∗n2
) o(m
∗n2)
無法優化…
換個方式做生成函式
a(x) 表示 質量為 x 的 氨基酸有幾類 b(
x)=∑
∞i=0
a(x)
i b(x
)=∑i
=0∞a
(x)i
顯然答案是b(x)中的n次項係數
上面的式子即為乙個無限等比數列求和
度度的公式s=
a1/(
1−q)
s =a
1/(1
−q
)那麼 b(
x)=∑
∞i=0
a(x)
i=11
−a(x
) b(x
)=∑i
=0∞a
(x)i
=11−
a(x)
很明顯b(x)即為(1-a(x))的逆元
我們做一下多項式求逆就好了…
cogs 2259
#include
#include
#include
#include
#include
#define int long long
const int maxm=2e6+100,mod=1005060097;
int rev[maxm],bin[1
<<21];
int a[maxm],b[maxm],c[maxm];
inline int fastpow(int
x,int
y)inline void ntt(int
*a,int n,int f)}}
if(f==-1)
}void getinv(int
*a,int
*b,int n)
getinv(a,b,(n+1)>>1);
intm=1;
for(;m
<=n;m
<<=1);
for(int i=0;ifor(int i=n;intt(c,m,1),ntt(b,m,1);
for(int i=0;i*b[i]%mod-c[i]*b[i]%mod
*b[i]%mod+mod)%mod;
ntt(b,m,-1);
for(int i=n;i}signed main()
a[0]=1;
int l;
for(l=1;l<=2
*n;l<<=1);
getinv(a,b,l);
printf("%lld\n",b[n]%mod);
return
0;}
2 25 演算法練習
時間限制 1.0s 記憶體限制 512.0mb 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位...
藍橋杯 練習(2 25)
時間限制 1.0s 記憶體限制 512.0mb 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,...
2 25安卓自學
今天學習tablelayout 如果我們直接往tablelayout中新增元件的話,那麼這個元件將佔滿一行!如果我們想一行上有多個元件的話,就要新增乙個tablerow的容器,把元件都丟到裡面!tablerow中的元件個數就決定了該行有多少列,而列的寬度由該列中最寬的單元格決定 tablerow的l...