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個球員擔任五個不同位置的得分,要你選五個球員組成一支球隊的最大得分。這道題要是全排列做的話...