時間限制:1000ms
記憶體限制:256000kb光光最近在研究乙個問題:在整式的乘法中,我們知道(a+b)1=a+b,(a+b)2=a2+2ab+b2,等等,這些都可以用簡單的手算求得。但是我們如果要求的(a+b)^n展開式,就不容易很快手算了。光光需要你去幫助他,這個時候應該如何去解答這個問題?
輸入僅一行,為n 的值。
輸出只需輸出一行表示式,格式為:
(a+b)^ n=*a^ n+*a^ (n-1)b+*a^ (n-2)b^ 2+…+*b^n
其中*為係數。如果係數為1,則需要省略係數;如果次數為1,則需要省略次數;如果次數為0,則需要省略;如果係數為0,則需要省略這一項。注意:
前面(a+b)^n 的次數是必有的。
(a+b)^ 5=a^ 5+5a^ 4b+10a^ 3b^ 2+10a^ 2b^
3+5ab^ 4+b^5
30%的資料中,n<=18;
60%的資料中,n<=34;
100%的資料中,n<=66。
每一項之間有規律,係數為楊輝三角第n+1行的數,第1項a的次數為n,b的次數為0,往後每一項a的次數為上一項a的次數減1,b的次數為上一項b的次數加1。計算楊輝三角第66行時也不需要用高精加,但要用long long。計算楊輝三角時用迭代法只需一維陣列。
#include
#include
using
namespace std;
long
long n,y[
200]
;//定義儲存楊輝三角第n+1行的陣列
void
yhsj()
//計算楊輝三角第n+1行
return;}
void
work()
//輸出答案中等號右邊部分
printf
("+%lldab^%lld+b^%lld"
,y[n-1]
,n-1
,n);
// 輸出答案的後2項。
return;}
intmain()
if(n==2)
yhsj()
;//計算楊輝三角第n+1行
work()
;//輸出答案中等號右邊部分
return0;
}
二項式係數
任務描述 根據二項式定理,對於給定的二項式 a b 的n次方可以展開為c a的k次方 b的 n k 次方,k 0,1,2,n。現在要求出二項式的各個項的係數c。輸入 第一行包含乙個整數k 1 k 33 表示測試用例的個數。每個測試用例包含乙個整數n 1 n 33 輸出 按公式中的順序輸出各個二項式係...
二項式定理
在初等代數中,二項式定理 英語 binomial theorem 描述了二項式的冪的代數展開。根據該定理,可以將兩個數之和的整數次冪諸如 x y n 展開為類似 axby c 項之和的恒等式,其中b c均為非負整數且b c n。係數a是依賴於 n 和b的正整數。當某項的指數為0時,通常略去不寫。例如...
二項式反演
先從反演原理出發,假如存在兩個數列 f,g 我們知道 f n sum limits n a times g i 則 g n sum limits n b times f i 恆成立,那麼我們由 f 推出 g 的過程叫做反演。下面我們來 一下上面兩個式子恆成立的條件,將左邊帶入右邊,那麼有 begin...