遞推+高精度
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 ...