思路:可以化成二進制來求解,結果是最高位的位數-1+最高位後面1的個數。例如:對於3,它的二進制代碼為11,就是用這個最高位(2-1)加上後面的1的個數(1個)。
用最高位1的目的是他能代表了轉化的次數,因為2+2=4,4+4=8 8+8=16........
#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; const int inf=0x3f3f3f3f; const double pi= acos(-1.0); const double esp=1e-6; const int maxn=21010; char str[110]; int main() { int T,n,i,j; int cnt; scanf(%d,&T); while(T--){ scanf(%d,&n); memset(str,0,sizeof(str)); i=0; while(n/2!=0){ str[i++]='0'+n%2; n=n/2; } str[i]='1'; cnt=0; for(j=0;j
poj 1222 EXTENDED LIGHTS OUT(高
旋轉數組的最小數字,旋轉數組數字旋轉數組的概念:把一個數組最
Prime Ring Problem(杭電1016)(DFS
[C++設計模式] adapter 適配器模式 STL中
openCV學習記錄:濾鏡:木刻&懷舊 木刻濾鏡
Chess Queen Input: Standard