bzoj2734 HNOI2012 集合選數

2022-06-03 11:48:10 字數 1340 閱讀 2614

《集合論與圖論》這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集:若 x 在該子集中,則 2x 和 3x 不能在該子集中。同學們不喜歡這種具有列舉性 質的題目,於是把它變成了以下問題:對於任意乙個正整數 n≤100000,如何求出 的滿足上述約束條件的子集的個數(只需輸出對 1,000,000,001 取模的結果),現在這個問題就 交給你了。 

只有一行,其中有乙個正整數 n,30%的資料滿足 n≤20。 

僅包含乙個正整數,表示有多少個滿足上述約束條件 的子集。 

4

8【樣例解釋】

有8 個集合滿足要求,分別是空集,,,,,,,。

題解:orz hzwer

code:

1 #include2 #include3 #include4 #include5 #include6

#define maxn 100005

7#define mod 1000000001

8using

namespace

std;

9 typedef long

long

int64;

10char

ch;11

bool

ok;12

void read(int &x)

17int n,m,list[12],cnt,sta[2050

];18

bool

bo[maxn];

19 int64 f[20][2050

],ans;

20bool check(int

s)24

else last=0;25

return

true;26

}27void

prepare()

31 int64 calc(int

st)41 last=lim;

42for (lim=0;1ll*list[lim]*2

<=n&&list[lim];lim++) list[lim]*=2,bo[list[lim]]=1;43

for (dep=0

;lim;)54}

55 last=lim;

56for (lim=0;1ll*list[lim]*2

<=n&&list[lim];lim++) list[lim]*=2,bo[list[lim]]=1;57

}58 int64 ans=0;59

for (int i=0;i<(1

60return

ans;61}

62int

main()

bzoj2734 HNOI2012 集合選數

time limit 10 sec memory limit 128 mb submit 831 solved 487 submit status discuss 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 3x 不能在該子集中。同...

bzoj2734 HNOI2012 集合選數

time limit 10 sec memory limit 128 mb submit 889 solved 523 submit status discuss description 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 ...

bzoj2734 HNOI2012 集合選數

題目鏈結 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 3x 不能在該子集中。同學們不喜歡這種具有列舉性 質的題目,於是把它變成了以下問題 對於任意乙個正整數 n 100000,如何求出 的滿足上述約束條件的子集的個數 只需輸出對 1...