我想找到兩個數字A,B(數字可以是正數/負數)之間的完美平方。我也想實現O(sqrt(abs(B)))的時間複雜度。如何找到2個數字之間的整個方塊
我寫了下面的代碼是:
count = (int)(Math.floor(Math.sqrt(Math.abs(B)) - Math.ceil(Math.sqrt(Math.abs(A))) + 1);
這通常效果很好,但是當範圍是-ve到+數字已經失敗。
例如是範圍爲A = 1,B = 1。然後我認爲它應該返回2(0,1),但返回1
我無法找到在其他的答案的溶液中SO。所以,任何幫助將不勝感激。
爲什麼使用C++標籤? – UnholySheep
我很滿意Java/C++的解決方案。我對邏輯更感興趣 – Sushil
'floor(sqrt(abs(1)))'是1,'ceil(sqrt(abs(-1)))'是1,所以如果你從另一箇中減去一個並加1得到... 1.這裏有什麼問題?除此之外,請記住,使用雙精度可能會導致精度問題,因此將其轉換爲int可能會產生意想不到的結果。 – Thomas