P1066 2 k進製數

2022-04-30 11:27:07 字數 848 閱讀 7909

p1066 2^k進製數

高精+組合數學

讀題可得,滿足條件的2^k進製數可分為2種

1.位數為2~w/k的

2.位數為w/k+1(w%k!=0)的

對於第一種,就是求2^k-1個數中不重複取 i 個的組合數,就是c(2^k-1,2)+...+c(2^k-1,w/k).

對於第二種,由於題目限制每一位嚴格小於右邊相鄰的一位,所以取數時只能越來越小,即c(2^k-1-i,w/k),其中 i 為最高位的所有可取值1~2^(w%k)-1

高精需要壓位,不然會mleqwq

#include#include

using

namespace

std;

const

int wid=10000

; //壓4位

struct

data

data

operator + (data &tmp)

while(x) u.a[++u.len]=x%wid,x/=wid;

return

u; }

data

operator * (data &tmp)

u.a[i+len]+=x;

}while(u.a[u.len+1]) u.a[u.len+2]+=u.a[u.len+1]/wid,u.a[(u.len++)+1]%=wid;

return

u; }

void

print()

}}c[513][513

],ans;

intk,w,n,p;

intmain()

P1066 2 k進製數

設r是個2 k 進製數,並滿足以下條件 1 r至少是個2位的2 k 進製數。2 作為2 k 進製數,除最後一位外,r的每一位嚴格小於它右邊相鄰的那一位。3 將r轉換為2進製數q後,則q的總位數不超過w。在這裡,正整數k 1 k 9 和w k 30000 是事先給定的。問 滿足上述條件的不同的r共有多...

洛谷 P1066 2 k進製數

題目描述 設r是個2 k 進製數,並滿足以下條件 1 r至少是個2位的2 k 進製數。2 作為2 k 進製數,除最後一位外,r的每一位嚴格小於它右邊相鄰的那一位。3 將r轉換為2進製數q後,則q的總位數不超過w。在這裡,正整數k 1 k 9 和w k w span 30000 是事先給定的。問 滿足...

k進製數交換

問題進入 k進製數的數字交換問題,就是給出乙個k進製的數,求出其中任意兩個數字交換後的大小 我們先以十進位制數123為例,假如交換第一位和第二位變成213。那麼這兩個數之間存在什麼關係呢,我們注意到百位上本來是1,變成了2之後原數就要增加 2 1 100 十位上本來是2,變成1之後原數就要增加 1 ...