計蒜客藍橋杯模擬賽心得

2021-10-09 23:32:48 字數 1949 閱讀 9458

1.有趣的數字

我們稱乙個數是質數,而且數字**現了 55 的數字是有趣的。例如 5, 59, 457 都是有趣的,而 15,7 不是。求 1 到 100000 中有趣的數的個數。

思路:其實很簡單,(1)判斷是否為素數(2)位數是否含有5

注意點:剛開始以為要總數減去1,就是15這個數,後來才發現15不是素數。

**:

#include

#include

using

namespace std;

boolg(

int i)

return

true;}

boolf(

int i)

return

false;}

return

false;}

intmain()

} cout<

}

答案:3282

2.爬樓梯:

蒜頭君要爬樓梯。樓梯一共有 10層台階。因為腿長的限制,每次最多能上 4 層台階。但是第 5,7 層樓梯壞掉了不能踩。求上樓梯的方案數。

思路:就是深搜就行了

注意點:注意邊界的處理除了5,7還要排除大於10的

**:

#include

#include

using

namespace std;

int cut=0;

voidf(

int n)

if(n==

5||n==

7||n>10)

return;f

(n+1);

f(n+2)

;f(n+3);

f(n+4)

;}intmain()

3.七巧板

求問在以下圖案的大三角形內部新增五條直線最多可以將大三角形分成多少個區域。例如下圖一共有 7 個區域。請在下圖的基礎上新增五條直線。

思路:每次切最多塊

第一次切了6塊,然後往後的每刀會多切一塊

答案:(6+7+8+9+10)+ 7 = 47

4.蘋果

有 30 個籃子,每個籃子裡有若干個蘋果,籃子裡的蘋果數序列已經給出。

現在要把蘋果分給小朋友們,每個小朋友要麼從乙個籃子裡拿三個蘋果,要麼從相鄰的三個籃子裡各拿乙個蘋果。

蘋果可以剩餘,而且不同的拿法會導致不同的答案。比如對於序列3 1 3 ,可以分給兩個小朋友變成0 1 0;也可以分給乙個小朋友變成2 0 2,此時不能繼續再分了。所以答案是 2 。

求問對於以下序列,最多分給幾個小朋友?

7212

5998

107105

4584

410113

8783

2163971

思路:這總題目很明顯的最優解有兩種可能。(1)盡量先拿三個一(2)盡量先拿單個三;經過試探,(2)較優,就是在判斷是否拿三個的時候是》3還是》=3,可以寫好**然後再測試。

**:

#include

#include

using

namespace std;

int a[31]

;int cut;

voidf(

int i)

else

if(i<=

28&&a[i]

&&a[i+1]

&&a[i+2]

)f(i+1);

}int

mian()

f(1)

; cout<

}

計蒜客藍橋杯省賽模擬五

a.了解進製轉換原理 b.熟練掌握求數字中各個位置數的方法 includeusing namespace std int check int a return re int main void printf lld n ans return 0 c.做法一 費馬小定理的運用,若a和b互質,則a的 b...

2019計蒜客藍橋杯模擬賽三

思路 一開始遞推推錯了,改用dfs includeusing namespace std int ans void dfs int x,int sum 記住i從x開始搜的這一剪枝,不僅僅可以提公升效率 更重要的是可以保證搜尋出來的結果不會重複,是有序的 for int i x i 10 sum i ...

藍橋杯 計蒜客2017模擬賽A習題整理

輸出的不老練,還是分開自己在加一下吧。includeusing namespace std int main for int i 1 i 20 i printf lld n sum printf f s 0.5 return 0 沒啥說的,暴力就行了。includeusing namespace s...