2019第十屆藍橋杯省賽C C B組第三題

2021-09-14 02:02:17 字數 1404 閱讀 6177

1.題目

數列求值:給定數列1, 1, 1, 3, 5, 9, 17, …,從第4 項開始,每項都是前3 項的和。求第20190324 項的最後4 位數字。

2.思路:

改一下求斐波那契數列的**。

3.**:

//存放在靜態儲存區

#include

using namespace std;

const

int max=

30000000

;inta(

int b,

int n)

return b[n];}

intmain()

//存放在堆上

#includeusing namespace std;

const int max=30000000;

int a(int b,int n)

return b[n];

}int main(){

int *b = new int[max];

int n;

cin>>n;

cout<4.總結:

當時寫**時候,直接定義了乙個區域性整形陣列,結果棧溢位了(int佔四個位元組(byte),棧的大小是2m。換算關係:1m=1024kb,1kb=1024b。需要位元組:201903244=80761296,棧的位元組:21024*1024=2077152。顯然不夠)。

解決方法:

一,讓陣列存在靜態儲存區,兩種方法:1,宣告為全域性變數。2,宣告為靜態變數。

二,讓陣列存在堆中:比如:int *list=new int[30000000];

總結下記憶體的三種分配方式:

1. 從靜態儲存區分配:此時的內存在程式編譯的時候已經分配好,並且在程式的整個執行期間都存在。全域性變數,static變數等在此儲存。

2. 在棧區分配:相關**執行時建立,執行結束時被自動釋放。區域性變數在此儲存。棧記憶體分配運算內置於處理器的指令集中,效率高,但容量有限。

3. 在堆區分配:動態分配記憶體。用new/malloc時開闢,delete/free時釋放。生存期由使用者指定,靈活。但有記憶體洩露等問題

關於為什麼只求最後四位數:int表示不了了。看c 標準庫 - 就知道了。

limits.h 標頭檔案決定了各種變數型別的各種屬性。定義在該標頭檔案中的巨集限制了各種變數型別(比如 char、int 和 long)的值。這些限制指定了變數不能儲存任何超出這些限制的值,例如乙個無符號可以儲存的最大值是 255。

庫巨集下面的值是特定實現的,且是通過 #define 指令來定義的,這些值都不得低於下邊所給出的值。

2019第十屆藍橋杯省賽C C B組總結

這是第一次參加藍橋杯,之前沒有接觸過這樣的比賽,感覺就乙個 不踏實。沒有乙個及時的反饋讓你總覺得心裡不安,不過還好今年題目不算太難 雖然坑設定的很猥瑣 不然當你交一道錯一道的時候,你心態直接就炸了。這也是它的好處吧。先說點令人放鬆的事情,這次比賽在河南農大 龍子湖校區 我們週六早上坐著學校的大巴就去...

2019第十屆藍橋杯省賽 賽後反思

太菜了!太菜了!太菜了!太飄了!太飄了!太飄了!又菜又膨脹!唉,本來可以省一的,太膨脹了,居然都沒有認真的去想特殊案例。比賽剛開始的時候還很認真的,看了前幾個題,感覺好簡單,就開始膨脹了。結果。第四題就錯了。第七題忘了有沒有考慮負數了 估計沒有考慮 第八題居然沒有考慮到公差為0的情況 啊啊啊啊!第九...

2019第十屆藍橋杯C C

這是我第一次參加藍橋杯比賽,比完後,有點低於預期,自己的發揮低於預期,賽事水準也低於預期。教室裡面很多同學的電腦出現問題,舉辦學校也沒有完善的應急方案,有一部分同學11點鐘才可以做題。提取碼 560f1.給20個球員擔任五個不同位置的得分,要你選五個球員組成一支球隊的最大得分。這道題要是全排列做的話...