劃分整數
蒜頭君特別喜歡數學。今天,蒜頭君突發奇想:如果想要把乙個正整數 nn
n 分解成不多於 kk
k 個正整數相加的形式,那麼一共有多少種分解的方式呢?
蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。
共一行,包含兩個整數 n(1≤n≤300)n(1 \leq n \leq 300)n(
1≤n≤
300)
和 k(1≤k≤300)k(1 \leq k \leq 300)k(
1≤k≤
300)
,含義如題意所示。
乙個數字,代表所求的方案數。
樣例輸入
5 3樣例輸出
5可設dp[n][k]表示將正整數n分解為不多於k個正整數相加的形式的方案數。根據題意,應分以下4種情況討論:
1°n=1 或 k=1:n=1時只有"1=1"這1種分解方案;k=1時只有"n=n"這1種分解方案,故方案數=1;
2°n3°n>k:根據"是否將n恰好分解為k個正整數相加的形式"(上界),進行討論:
1°°將n恰好分解為k個正整數相加的形式:此時分解出的每個正整數t都滿足t>=1,故相當於將分解出的k個數"都減去1",即相當於dp[n-k][k],也就是將正整數n-k分解為不多於k個正整數相加的形式的方案數;
2°°將n分解為小於k個正整數相加的形式:此時即dp[n][k-1],也就是將正整數n分解為不多於k-1個正整數相加的形式的方案數;
故方案數=dp[n-k][k]+dp[n][k-1];
4°n=k:總體與3°相同,但將n恰好分解為k個正整數相加的形式時,只有"n=n/k+n/k+...+n/k"這1種分解方案,故方案數=1+dp[n][k-1]。
綜上,可得以下結論:
計蒜客 基礎dp 劃分整數
蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 n 分解成不多於 k 個正整數相加的形式,那麼一共有多少種分解的方式呢 蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。共一行,包含兩個整數 n 1 n 300 和 k 1 k 300 含義如題意所示。乙個數字,代表所求的方案數。樣...
計蒜客 劃分整數(動態規劃)
劃分整數 蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 nnn 分解成不多於 kkk 個正整數相加的形式,那麼一共有多少種分解的方式呢?蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。輸入格式 共一行,包含兩個整數 n 1 n 300 n 1 leq n leq 300 n 1...
計蒜客 A1634 劃分整數
標籤 計數dp 相似題目 題目蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 n 分解成不多於 k 個正整數相加的形式,那麼一共有多少種分解的方式呢?蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。輸入共一行,包含兩個整數n 1 n 300 和k 1 k 300 含義如題意所示。...