藍橋杯刷題()第一天

2021-10-12 06:02:28 字數 2284 閱讀 2710

#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...