NOIP 2011 計算係數

2022-08-18 01:09:09 字數 1185 閱讀 6361

求 (ax+by)^k 的展開中 x^n*y^m 項的係數。由於係數可能很大,只要求輸出除以 10007 的餘數。

一行共五個整數,分別為 a,b,k,n,m

乙個整數,為該項係數除以10007的餘數。

1 1 3 1 2
3
資料範圍:

30% 0<=k<=10,

50% a=1,b=1

100% 0<=k<=1000, 0<=n,m<=k 且 n+m=k, 0<=a,b<=100,000

//noip2011 day2 factor

solution:

首先先不考慮a,b的變化,即假設a=b=1。

然後開始分析題意,(ax+by)^k的展開,在數學上是乙個楊輝三角~

//下面是數學問題惹

(假定a=b=1) 我們就k=0,1,2,3...進行分析

1                x^0*y^0

1 1           x^1+y^1

1 2 1          x^2+2xy+y^2

1 3 3 1       x^3+3x^2y+3xy^2+*y^2

以此類推,本題只是增加了a,b的數值。

在楊輝三角中找出ans=f[k][m]後,再把ans^a後再ans^b即可。

記得取模(不用寫快速冪也是很良心der~)

1 #include2

#define maxn 1005

3#define mode 10007

4using

namespace

std;

5int

f[maxn][maxn];

6int a,b,k,n,m,ans=1;7

intmain()

14for(int i=3;i<=k;i++)

15for(int j=2;j<=i;j++) f[i][j]=(f[i-1][j-1]+f[i-1][j])%mode;

16 ans=f[k][m]%mode;

17for(int i=1;i<=n;i++) ans=(ans*a)%mode;

18for(int i=1;i<=m;i++) ans=(ans*b)%mode;

19 printf("%d"

,ans);

20return0;

21 }

NOIP2011 計算係數

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

NOIP 2011 計算係數

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

NOIp2011 計算係數

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