2 k進製數

2021-08-29 22:48:22 字數 537 閱讀 7901

遞推+高精度

f[i][j]表示共i位且最高位是j的方案數,顯然有只要上一位比它大就可以轉移,所以有f[i][j]=f[i-1][j+1]+…+f[i-1][2^k-i+1]

也就是f[i][j]=f[i][j+1]+f[i-1][j]

最後特判一下最後一段剩下的w<=k的就可以。

注意高精

#include using namespace std;

typedef long long ll;

int k,w,maxk;

int a[515][515][205],res[205];

void mysum(int* x,int* y,int* z)

if(jw)

}int main()

int p=w/k,q=w-p*k;

int maxq=pow(2,q);

for(int i=2;i<=p&&i=1;i--) printf("%d",res[i]);

return 0;

}

2 k進製數

設 s 是長度為 w 的 01 串。從串的右邊開始,每 k 個字元分成一段 最後不夠 k 個字元的也分成一段 組成乙個小於 2 k 的數。然後這 left lceil frac right rceil 個數將組成乙個序列。若這個序列除去前導零後的長度不小於 2 且序列裡的數嚴格遞增,那麼 s 就是乙...

2 k進製數

發現自己推得組合數好像不太一樣 先把這個複雜的柿子寫一遍 sum right rfloor c sum text textk 1 c right rfloor 感覺這個柿子非常蛇皮 但是非常好求啊 由於 2 k 1 非常小,最大僅僅是 511 所以我們沒有什麼必要預處理階乘,我們可以直接用組合數遞推...

2 k進製數(藍橋杯)

思路 首先就是理解題意,這道題我看了一天了,現在還是沒整出來,錯誤50 可能是中間產生溢位了。這是一道組合題,重點就是最高位的選取,我們分成兩種情況來考慮 if m錯誤50 待更 更新 就是沒有注意寫的組合數函式還必須滿足的乙個條件 m n include include includeusing ...