已知f[1][1]=1,f[i][j]=a*f[i-1][j]+b*f[i-1][j-1](i>=2,1<=j<=i)。
對於其他情況f[i][j]=0
有t組詢問,每次給出a,b,n,m,求f[n][m] mod (998244353)
第一行為乙個整數t,表示詢問個數。接下來一共t行,每行四個整數a,b,n,m。
一共t行,每行乙個整數,表示f[n][m] mod (998244353)
根據公式可將f[n][m]看成是走n步到達m公尺,其中要麼不走,要麼一次走1公尺,由於f[1][1] = 1限定為了1種方式,所以實際上相當於只走n-1步,到達m-1公尺的方法數,另外不走的方法又有a種,走的方法又有b種,生成函式為(a+bx)^n-1,最終得到
f[n][m] = c(n-1,m-1) * a^(n - m) * b^(m - 1)
#include #include #include using namespace std;
#define mod 998244353
long long d[100005];
long long quickpow(int a,int k)
q = q * q % mod;
k >>= 1;
}return ans;
}void init()
}int main()
return 0;
}
白兔的式子(費馬小定理 逆元)
題目描述 已知f 1 1 1,f i j a f i 1 j b f i 1 j 1 i 2,1 j i 對於其他情況f i j 0 有t組詢問,每次給出a,b,n,m,求f n m mod 998244353 輸入描述 第一行為乙個整數t,表示詢問個數。接下來一共t行,每行四個整數a,b,n,m。...
Codeforces 1188B 式子轉化
思路 看到 a b 想到乘上 a b 變成平方差展開 並沒有想到2333 兩邊同時乘上a b,最後式子轉化成了a 4 ka b 4 kb,剩下的就水到渠成了。0的時候特判一下即可。include define ll long long define inf 0x3f3f3f3f define pii...
白兔的字串
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld白兔有乙個字串t。白雲有若干個字串s1,s2 sn。白兔想知道,對於白雲的每乙個字串,它有多少個子串是和t迴圈同構的。所有字元都是小寫英文本母 輸入描述 第一行乙個字...