看板 C_and_CPP 關於我們 聯絡資訊
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) http://zerojudge.tw/ShowProblem?problemid=d541 希望得到的正確結果: 看不出來哪裡RE@@" 程式跑出來的錯誤結果: 本題目共 5 個測試點,您的程式共通過 4 個測試點。(score:49) 獲得部分分數 49 分。 錯誤訊息如下: *** 第 1 點 (5%):AC (8ms, 700KB) *** 第 2 點 (9%):AC (4ms, 696KB) *** 第 3 點 (12%):AC (4ms, 692KB) *** 第 4 點 (23%):AC (12ms, 700KB) *** 第 5 點 (51%):RE (SIGSEGV) 執行時發生錯誤 (SIGSEGV)(11)!! Segmentation fault, an address reference boundary error.(記憶體區段錯誤) 可能原因為: * 通常為使用超過陣列範圍 * 指標指向不正確位址! * 陣列初始化不正確! * 嘗試在執行時期定義陣列長度! sh: line 1: 21639 程式記憶體區段錯誤 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c++ 有問題的code: (請善用置底文標色功能) #include<iostream> using namespace std; int mods(long long, long long,int); long long a,b; int n; int main() { while(cin>>n) { cout<<mods(2,n-1,1234567)<<endl; } return 0; } int mods(long long a,long long b,int n) { if(b==0) return 1; else if(b%2) return (a*mods(a,b-1,n))%n; else { unsigned long long value=mods(a,b/2,n); return ((value%n)*(value%n))%n; } } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.104.175
VictorTom:Recursive?? 那就有機會是stack call到爆了啊....@_@" 11/21 18:50
AstralBrain:應該有99%是stack爆.. 那題測資有陷阱 11/21 18:58
tw00088437:可是已經D/C了 測資才不到2^31次 一個測資應該頂多60 11/21 19:00
AstralBrain:講太明就不好玩了 總之記得檢查input範圍 11/21 19:00
tw00088437:幾次就搞定了啊@_@ 這樣就會爆嗎>< 11/21 19:00
tw00088437:才不到2^31... (第三行沒有"次"@@) 11/21 19:01
tw00088437:我用了看起來最可能爆的2^31-1 (2147483647)跑 11/21 19:03
tw00088437:也沒事@@" 11/21 19:03
AstralBrain:要注意n有給上界但是沒有下界... 11/21 19:03
tw00088437:@@@@@@@@@@@@ 11/21 19:06
我把while裡面改成 while(cin>>n) { if(n<1) cout<<"0"<<endl; else cout<<mods(2,n-1,1234567)<<endl; } 結果變成TLE = =" 怎麼回事.... ※ 編輯: tw00088437 來自: 61.228.104.175 (11/21 19:08)
AstralBrain:通透了嗎XD 其實我覺得慮理這種bug根本是在浪費生命 11/21 19:08
AstralBrain:還不如去想下一題 11/21 19:08
tw00088437:所以是很沒意義的梗嗎@_@ 那請直接破我梗告訴我吧= = 11/21 19:09
AstralBrain:就input可能會<=0 不過你為什麼會tle我不知道XD 11/21 19:10
AstralBrain:s/慮理/處理/g 11/21 19:11
tw00088437:囧 你講完之後我也發現會負數 不過TLE得很詭異 = = 11/21 19:14
tw00088437:一樣是只有第五個測資TLE 11/21 19:14
tw00088437:囧 所以大大寫的時候是怎麼處理掉第五個的@@? 11/21 19:18
AstralBrain:一樣@@ if(n <= 0) cout << 0 << endl; 11/21 19:20
AstralBrain:我發現我的n是unsigned long long.. 所以沒有負數(?) 11/21 19:20
tw00088437:還是TLE....崩潰啦 = = 11/21 19:23