如何找到兩個數字之間的完美力量? 採樣輸入:0和10 輸出:2,4,8兩個數字之間的完美力量
回答
那麼最有趣的部分是「我如何獲得的2的最大功率小於或等於我的上限」和同爲最低功耗2大於或等於下限。
嗯,這很容易做到沒有循環。對於無符號的32位數字:
floor(x): ; floor power of 2
x = x | (x >> 1)
x = x | (x >> 2)
x = x | (x >> 4)
x = x | (x >> 8)
x = x | (x >> 16)
return x - (x >> 1)
ceil(x): ; ceiling power of 2
x = x - 1
x = x | (x >> 1)
x = x | (x >> 2)
x = x | (x >> 4)
x = x | (x >> 8)
x = x | (x >> 16)
return x + 1
你不會繞過輸出數字的循環,但哦。
在達到0之前可以移位多少次?
找到第一個數字中設置爲1的最高位,比如它位於位置x從最低位開始計數。然後找到第二個數字中設置爲1的最高位,比如位於y。數字2 X + 1,2 X + 2 ...,2 ÿ是你要找的
我們可以做這個沒有一個while循環 – 2011-03-31 11:46:22
@Ajay,如果你有這樣的要求,請更新您的問題。 – Muggen 2011-03-31 11:47:36
@Ajay:好吧,不,你需要一個循環來找到最高位集 – 2011-03-31 11:47:41
您可以用數字的二進制表示和輸出所有的號碼之間的數字其中只有一個位被設置:
0 = 00000000
10 = 00001010
=>
00000001 (1)
00000010 (2)
00000100 (4)
00001000 (8)
所以你的問題歸結爲尋找比最小的兩個較大的,然後第一動力左移,而你小於最大值。或者,除了最高值之外,將所有設置位置於最大值中,然後在大於最小值時向右移位。
亞這我已經知道如何可以找到這些數字有位設置爲一。爲此我必須執行一個循環,我有沒有任何方法來執行這個任務沒有循環 – 2011-03-31 11:49:36
@Ajay:因爲你的輸出總是會是多個數字,你將永遠不得不使用循環或至少類似於循環(fe遞歸的方法將是可能的,但這沒有多大意義)。 – schnaader 2011-03-31 11:54:04
步驟:
- 比方說
n1 = start_of_range
,n2 = end_of_range.
- 瞭解需要多少位來表示
n1
。稱它爲b
。 - 現在
2**b
將在n1
之後成爲下一個二次冪。 - 從這裏應該很容易計算出所有的2的權力,直到
n2
。
樣品Python代碼:
#!/usr/bin/python
def get_bits(n):
b = 0
while n:
n = n/2
b += 1
return b
def get_power_of_two_in_range(n1, n2):
b = get_bits(n1)
x = 2**b
res = []
while x < n2:
res.append(x)
x = x * 2
return res
def main():
print get_power_of_two_in_range(0, 10)
if __name__ == '__main__':
main()
int first=0; //**first number which is a complete power of 2 in the range!**
for(i=low;i<high;i++){
if(2i==(i^(i-1)+1)){
first=i;
break;
}
}
while(first!=0){
print first;
first*=2;
if(first>high){
break;
}
}
- 1. 完美對齊兩個字符串(python)
- 2. 找到1到100之間的完美數字
- 3. 無法獲得兩地之間的完美距離
- 4. 力之間兩個左柱引導3
- 5. 兩個數字之間的素數
- 6. 找到兩個數字之間的平方根的數量
- 7. python中的完美數字
- 8. 兩個數字之間的查詢
- 9. 找到兩個數字之間的點
- 10. 如何將兩個浮動元素之間的浮動元素完美居中?
- 11. 在兩個數據網格項目之間拖動的能力
- 12. 在完美的中間對齊兩個元素
- 13. 完美數字性能
- 14. 在一定範圍內完美數字的完美廣場
- 15. 如果值在兩個數字之間
- 16. 兩個字符串之間
- 17. 查找兩個字符變量之間的常見子字符
- 18. 我想找到0到1000之間的完美數字,而不是跑步
- 19. 正則表達式量詞 - 兩個字符之間的多個
- 20. 如何比較兩個數字的數字之間的差異?
- 21. Gridview項目之間完美的線性間距
- 22. 兩個向量之間的角度matlab
- 23. 兩個向量之間的相關性?
- 24. 兩個3d矢量之間的弧線
- 25. 兩個3D矢量之間的角度
- 26. 兩個SYSTEMTIME變量之間的區別
- 27. 計算兩個日期之間的完整月數在SQL
- 28. 獲取兩個日期之間的完整分鐘數
- 29. 兩個文件之間的兩個時間戳之間的數據組合
- 30. 計數兩個字符串之間的字數python regexp
這是一個功課題嗎? – templatetypedef 2011-03-31 11:43:38
爲什麼你的預期產出不是1? – 2011-03-31 11:43:45
雅我們可以加1也;那不是問題 – 2011-03-31 11:46:57