自然數無序拆分

2021-09-11 22:32:00 字數 850 閱讀 4559

#includeusing namespace std;

int n;

int dfs(int x,int y)

}int main()

#includeusing namespace std;

int n,i,j,f[105][105];

int main() else if (i==j) else if (i-j3.母函式

f(x)=(1+x^1+x^2+x^3....+x^n)*(1+x^2+x^4+...)*.....(1+x^n);

然後首先數為n的被分數,可以由1,2,3,4,......,n組成,就是不知道選1幾個,選2幾個。。。

這時候我們可以看一下母函式,設選的數字為i,選的次數為k,那麼x的指數可以表示為x^(i*k);

就像f(x)中(1+x^1+x^2+x^3....+x^n)表示1不選,1選一次,1選2次....; (1+x^2+x^4+...)表示2不選,2選1次,選2次。。。

那麼我們要求的分解n的種數就是x^n前的係數(很容易想)。 

怎麼求x^n的係數呢,多項式相乘解決。

#include#includeusing namespace std;

int i,j,k,l,n,a1[105],a2[105];

int main()

scanf("%d",&n);

for (i==2;i<=n;i++)

} memcpy(a1,a2,sizeof(a1));

memset(a2,0,sizeof(a2));

} printf("%d\n",a1[n]);

}

自然數無序拆分

原 2018年12月09日 12 10 27 oneplus123 時間限制 1 sec 記憶體限制 128 mb 題目描述 美羊羊給喜羊羊和沸羊羊出了一道難題,說誰能先做出來,我就獎勵給他我自己做的一樣禮物。沸羊羊這下可樂了,於是馬上答應立刻做出來,喜羊羊見狀,當然也不甘示弱,向沸羊羊發起了挑戰。...

自然數拆分

描述 description 輸入自然數n,然後將其拆分成由若干數相加的形式,參與加法運算的數可以重複。輸入格式 inputformat 輸入只有乙個整數n,表示待拆分的自然數n。n 80 輸出格式 outputformat 輸出乙個數,即所有方案數 樣例輸入 sampleinput 複製資料 7 ...

自然數拆分

問題描述 自然數的拆分 任何乙個大於1的自然數n,總可以拆分成若干個自然數之和,並且有多種拆分方法。試求 n的所有拆分。例如自然數5,可以有如下一些拆分方法 5 1 1 1 1 1 5 1 1 1 2 5 1 2 2 5 1 4 5 2 3 注意,本題中n拆分出來的數x的範圍是1 x整數劃分可以參考...