[ACM ] 10394 twin primes (CE)

看板C_and_CPP (C/C++)作者 (喵貓 loves fish)時間16年前 (2009/11/19 18:29), 編輯推噓5(507)
留言12則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 題號: http://zerojudge.tw/ShowProblem?problemid=d362 遇到的問題: 在dev c++上可以跑 但是上傳之後Compilation Error 編譯錯誤, 請檢查語法是否符合系統所支援的編譯器的要求。 錯誤訊息: /usr/bin/ld: final link failed: Memory exhausted collect2: ld returned 1 exit status 有問題的code: (請善用置底文的標色功能) #include<iostream> using namespace std; #define max 20000001 #define up 2000001 int prime[max]={2,2,1,1,0}; int store[up+1]={0,2,3}; int ans[100001]={0}; int main() { int c=3; for(int x=4;x<max;x+=2) prime[x]=2; for(int x=9;x<max;x+=3) prime[x]=2; for(int x=5,d=0;x<max;x+=( ((d&1)<<1)+2),d++) { if(!(prime[x])) { prime[x]=1; store[c]=x; c++; if(c==up) break; for(int y=5*x;y<max;y+=x) prime[y]=2; } } int f=1; for(int z=1;z<(up-1);z++) { if((store[z+1]-store[z])==2) { ans[f]=store[z]; f++; if(f==100001) break; } } int n; while(cin>>n) cout<<"("<<ans[n]<<", "<<ans[n]+2<<")"<<endl; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.101.7

11/19 18:33, , 1F
錯誤訊息不是告訴你記憶體用超過了嗎?? 看起來就是靜態
11/19 18:33, 1F

11/19 18:33, , 2F
陣列開太大了?_?
11/19 18:33, 2F

11/19 18:34, , 3F
可是題目要求不是得開到那麼大嗎@"@..
11/19 18:34, 3F

11/19 18:36, , 4F
我傳了沒問題啊
11/19 18:36, 4F

11/19 18:36, , 5F
題目又沒有叫你用什麼資料形態開那麼大 XD
11/19 18:36, 5F

11/19 18:36, , 6F
uva judge, AC 2.376sec
11/19 18:36, 6F

11/19 18:37, , 7F
本人也寫過這題,可以給你一個關鍵字:bitset
11/19 18:37, 7F

11/19 18:46, , 8F
奇怪 我傳UVA也過了 這是怎麼回事= =
11/19 18:46, 8F

11/19 18:48, , 9F
話說, 這個感覺不需要開int這麼大array啊XD
11/19 18:48, 9F

11/19 18:50, , 10F
但是問題又不在演算法XD
11/19 18:50, 10F

11/19 18:50, , 11F
算了, 從沒寫過ACM題目, 還是不要亂猜....Orz
11/19 18:50, 11F

11/20 00:24, , 12F
用bool用量就剩1/4 用bitset就剩1/32 別老是int
11/20 00:24, 12F
文章代碼(AID): #1B1HuGno (C_and_CPP)
文章代碼(AID): #1B1HuGno (C_and_CPP)