[問題] 沒有用陣列和指標可是上傳也會RE@@!?

看板C_and_CPP (C/C++)作者 (喵貓 loves fish)時間16年前 (2009/11/21 18:24), 編輯推噓6(6015)
留言21則, 3人參與, 最新討論串1/2 (看更多)
( *[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

11/21 18:50, , 1F
Recursive?? 那就有機會是stack call到爆了啊....@_@"
11/21 18:50, 1F

11/21 18:58, , 2F
應該有99%是stack爆.. 那題測資有陷阱
11/21 18:58, 2F

11/21 19:00, , 3F
可是已經D/C了 測資才不到2^31次 一個測資應該頂多60
11/21 19:00, 3F

11/21 19:00, , 4F
講太明就不好玩了 總之記得檢查input範圍
11/21 19:00, 4F

11/21 19:00, , 5F
幾次就搞定了啊@_@ 這樣就會爆嗎><
11/21 19:00, 5F

11/21 19:01, , 6F
才不到2^31... (第三行沒有"次"@@)
11/21 19:01, 6F

11/21 19:03, , 7F
我用了看起來最可能爆的2^31-1 (2147483647)跑
11/21 19:03, 7F

11/21 19:03, , 8F
也沒事@@"
11/21 19:03, 8F

11/21 19:03, , 9F
要注意n有給上界但是沒有下界...
11/21 19:03, 9F

11/21 19:06, , 10F
@@@@@@@@@@@@
11/21 19:06, 10F
我把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)

11/21 19:08, , 11F
通透了嗎XD 其實我覺得慮理這種bug根本是在浪費生命
11/21 19:08, 11F

11/21 19:08, , 12F
還不如去想下一題
11/21 19:08, 12F

11/21 19:09, , 13F
所以是很沒意義的梗嗎@_@ 那請直接破我梗告訴我吧= =
11/21 19:09, 13F

11/21 19:10, , 14F
就input可能會<=0 不過你為什麼會tle我不知道XD
11/21 19:10, 14F

11/21 19:11, , 15F
s/慮理/處理/g
11/21 19:11, 15F

11/21 19:14, , 16F
囧 你講完之後我也發現會負數 不過TLE得很詭異 = =
11/21 19:14, 16F

11/21 19:14, , 17F
一樣是只有第五個測資TLE
11/21 19:14, 17F

11/21 19:18, , 18F
囧 所以大大寫的時候是怎麼處理掉第五個的@@?
11/21 19:18, 18F

11/21 19:20, , 19F
一樣@@ if(n <= 0) cout << 0 << endl;
11/21 19:20, 19F

11/21 19:20, , 20F
我發現我的n是unsigned long long.. 所以沒有負數(?)
11/21 19:20, 20F

11/21 19:23, , 21F
還是TLE....崩潰啦 = =
11/21 19:23, 21F
文章代碼(AID): #1B1x_GyV (C_and_CPP)
文章代碼(AID): #1B1x_GyV (C_and_CPP)