#include
using namespace std;
intmain()
cout
}
法二:將0000000000…1移動32次,32正好是乙個int表示的大小
列舉32位所有可能,每次列舉的時候,除了該位是1其他位置都是0,所以每次判斷是否&後和生成的這個數一樣
#include
using
namespace std;
intmain()
} cout
}
法三:我們思考這樣的乙個東西,我們模擬數1,每次數到乙個1就記錄消除這個1,那麼我們消除幾次這個1就代表我們有幾個1;
這樣想的話很簡單;我們每次把這個數n和(n-1)進行&運算就好了
比如5是101
101 (-)1是 100 &101後就是100
100(-)1是 011 &100後就是000
結束 操作了2次就2個
**:
#include
using
namespace std;
intmain()
cout
}
題目:設計乙個演算法,計算出n階乘中尾部零的個數
思路:尾部的0要如何計算呢,尾巴的0是如何出來的呢,就是因為10出來的,10就是2*5的乘積;5的個數就是次數;
**:
public
static
long
trailingzeros
(long n)
return count;
}
題目:寫乙個程式來檢測乙個整數是不是醜數。
醜數的定義是,只包含質因子 2, 3, 5 的正整數。比如 6, 8 就是醜數,但是 14 不是醜數因為他包含了質因子 7。
**:
public
class
solution
else
if(num%3==
0)else
if(num%5==
0)else
return
false;}
return
true;}
}
題目:
判斷乙個數字是不是2的次方:
**:
#include
#include
using namespace std;
int a[
10010];
intmain()
if(i==
1) cout<<
"yes"
;else cout<<
"no"
;return0;
}
#include
#include
using namespace std;
int a[
10010];
intmain()
#include
#include
#include
using
namespace std;
int a[
10010];
intmain()
else
if(aa<1)
sum++;if
(sum>32)
} cout
}
這裡補充乙個重點的二進位制;
二進位制如何表示浮點數;
比如表示0.625;
乘2消整法:
0.6252=1.25
消除整數字1
輸出1;
變成0.25
0.252=0.5;
輸出00.5*2=1;
輸出1;
消1變為0
所以就是0.101;
**:
#include
#include
#include
using
namespace std;
int a[
10010];
intmain()
else
if(aa<1)
sum++;if
(sum>32)
} cout
}
第一天刷題
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例1 輸入 l1 2 4,3 l2 5 6,4 輸出...
藍橋杯訓練第一天
例題1 輸入乙個三位數,分離出它的百位 十位和個位,反轉後輸出。樣例輸入 127樣例輸出 721分析 首先將三位數讀入變數n裡,然後進行分離。百位 n 100 十位 n 10 10 個位 n 10 解法 include int main 以上是一道簡單的三位數交換位置的題,由此延伸變數交換的三種方法...
leetcode刷題第一天
給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。class solution def addtwonumbers se...