洛谷P1313 計算係數 快速冪 dp

2022-01-15 05:01:51 字數 1267 閱讀 3592

給定乙個多項式(by+ax)^k,請求出多項式展開後x^n*y^m 項的係數。

輸入檔名為factor.in。

共一行,包含5 個整數,分別為 a ,b ,k ,n ,m,每兩個整數之間用乙個空格隔開。

輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對10007 取模後的結果。

輸入樣例#1:複製

1 1 3 1 2

輸出樣例#1:複製

3

【資料範圍】

對於30% 的資料,有 0 ≤k ≤10 ;

對於50% 的資料,有 a = 1,b = 1;

對於100%的資料,有 0 ≤k ≤1,000,0≤n, m ≤k ,且n + m = k ,0 ≤a ,b ≤1,000,000。

noip2011提高組day2第1題

題解:好久沒做題了,開坑第一題。。。

最後我們需要求解的結果是ans=dp[k+1][m]*(a^n)*(b^m) mod 10007

這題目首先是組合數,很快我們能夠聯絡到dp相關知識,可以看出來這就是個楊輝三角,我們需要求解的是c(k,m),而我們設定從1開始,所以我們需要求解的最後結果是dp[k+1][m],

做法是dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;

求解(a^n),(b^m)我們則採用快速冪來進行解決~~~做法如下:

1

ll qpow(ll x,ll p)7}

8return

ret;

9 }

最終我們可以寫出實現結果:

1 #include 2

using

namespace

std;

3 typedef long

long

ll;4

#define mod 10007

5 ll dp[1010][1010];6

ll qpow(ll x,ll p)12}

13return

ret;14}

15int

main()

21for(ll i=1;i<=k+1;i++)25}

26 ll ans=qpow(a,n)*qpow(b,m)*dp[k+1][m]%mod;

27 printf("

%lld\n

",ans);

28return0;

29 }

洛谷 P1313 計算係數

題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入輸出格式 輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對...

洛谷 P1313 計算係數

題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入輸出格式 輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對...

洛谷 P1313 計算係數

題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對10007 取...