發現的好東西 bitset

2022-05-18 05:22:29 字數 2242 閱讀 8182

先向各位大佬介紹乙個水題

任何乙個正整數都可以用2的冪次方表示。例如

137=2^7+2^3+2^0
同時約定方次用括號來表示,即a^b 可表示為a(b)。

由此可知,137可表示為:

2(7)+2(3)+2(0)
進一步:7= 2^2+2+2^0 (2^1用2表示)

3=2+2^0
所以最後137可表示為:

2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:

1315=2^10 +2^8 +2^5 +2+1
所以1315最後可表示為:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
輸入格式:

乙個正整數n(n≤20000)。

輸出格式:

符合約定的n的0,2表示(在表示中不能有空格)

輸入樣例#1: 複製

1315
輸出樣例#1: 複製

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

作為蒟蒻的我,對這道題表示被括號嚇到了,但。。。

大致思路是這樣的

1315

1: 1024+256+32+2+1

//需要位運算的支援(請忽略)

stack 015

8102: 10=2+8

stack 01

5813

stack 01

5810

1if(stack[i]<=1) s.pop(); return

i;else printf("

2(%d)

",find(x));

思路大概是對的,但對於我來說,程式實踐又成為了乙個問題。

不打**都不知道自己原來這麼水。orz

於是我去翻了翻題解

#include #include 

#include

#include

using

namespace

std;

intn;

void solve(intx)}

intmain()

//

我覺得bitset這個東西簡直太神奇了。

所以我就去查了查:

c++語言的乙個類庫,用來方便地管理一系列的bit位而不用程式設計師自己來寫**。

bitset除了可以訪問指定下標的bit位以外,還可以把它們作為乙個整數來進行某些統計。

(人話:定義一串二進位制數)

具體操作:

定義:

#includeusing

namespace

std;

bitset

<32> u(s); //

32位的u,是s的乙個副本

bitset<32> u(s,pos,n) //

32位的u,是從n開始的s的乙個副本

bitset<32> u; //

32位的u,每一位都為0

bitset<32> u(0x7ffff)

和vector的元素一樣,bitset中的位是沒有命名的,程式設計師只能按位置來訪問它們。位集合的位置編號從0開始,因此,bitvec的位序是從0到31。以0位開始的位串是低階位(low-order bit),以31位結束的位串是高階位(high-order bit)。

當用unsigned long值作為bitset物件的初始值時,該值將轉化為二進位制的位模式。

在32位unsigned long的機器上,十六進製制值0xffff表示為二進位制位就是十六個1和十六個0(每個0xf可表示為1111)。可以用0xffff初始化bitset物件

當用string物件初始化bitset物件時,string物件直接表示為位模式。

具體函式操作

to_ulong操作返回乙個unsigned long值,該值與bitset物件的位模式儲存值相同。僅當bitset型別的長度小於或等於unsigned long的長度時,才可以使用to_ulong操作。

果然還是好神奇!!!

ps:本文的部分資料來自

連線在此:

好東西私藏

在開發小專案時,經常會遇到很多的對錶的增刪改查操作,無外乎就是些增刪改查的儲存過程和c 呼叫 這些很大程度上都差不多,不厭其煩,用 生成器,有時候又覺得不太靈活。有很多地方還要改動,比較麻煩。所以就偷了個懶,自己寫了個儲存過程,專門用來自動生成這些 分享下,如果大家在使用過程中發現有不好的地方,也可...

好東西私藏

在開發小專案時,經常會遇到很多的對錶的增刪改查操作,無外乎就是些增刪改查的儲存過程和c 呼叫 這些很大程度上都差不多,不厭其煩,用 生成器,有時候又覺得不太靈活。有很多地方還要改動,比較麻煩。所以就偷了個懶,自己寫了個儲存過程,專門用來自動生成這些 分享下,如果大家在使用過程中發現有不好的地方,也可...

發現乙個好東西!魚汛工作手機

工作手機,是企業發展缺一不可的管理工具。現在很多人都喜歡談論和運用魚汛工作手機,因為不僅僅適用於部隊 機關,還適用於電商 教育 金融 醫美 保險 婚紗攝影等領域,有效管理員工,提公升工作效率,保護客戶資源,是企業管理必備神器!這款手機具有微信分析 分析 客戶分析 績效分析 安全管控 使用管控等六大功...