先向各位大佬介紹乙個水題
任何乙個正整數都可以用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我覺得bitset這個東西簡直太神奇了。#include
#include
using
namespace
std;
intn;
void solve(intx)}
intmain()
//
所以我就去查了查:
c++語言的乙個類庫,用來方便地管理一系列的bit位而不用程式設計師自己來寫**。
bitset除了可以訪問指定下標的bit位以外,還可以把它們作為乙個整數來進行某些統計。
(人話:定義一串二進位制數)
具體操作:
定義:
#includeusing和vector的元素一樣,bitset中的位是沒有命名的,程式設計師只能按位置來訪問它們。位集合的位置編號從0開始,因此,bitvec的位序是從0到31。以0位開始的位串是低階位(low-order bit),以31位結束的位串是高階位(high-order bit)。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)
當用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 呼叫 這些很大程度上都差不多,不厭其煩,用 生成器,有時候又覺得不太靈活。有很多地方還要改動,比較麻煩。所以就偷了個懶,自己寫了個儲存過程,專門用來自動生成這些 分享下,如果大家在使用過程中發現有不好的地方,也可...
發現乙個好東西!魚汛工作手機
工作手機,是企業發展缺一不可的管理工具。現在很多人都喜歡談論和運用魚汛工作手機,因為不僅僅適用於部隊 機關,還適用於電商 教育 金融 醫美 保險 婚紗攝影等領域,有效管理員工,提公升工作效率,保護客戶資源,是企業管理必備神器!這款手機具有微信分析 分析 客戶分析 績效分析 安全管控 使用管控等六大功...