[問題] online judge 上一題如何加速運算?
題目:
https://zerojudge.tw/ShowProblem?problemid=c226
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/AlD2neR4
補充說明(Supplement):
題目大意是對於某一正整數 N,
小於 N(1~ N-1)之連續正整數的和恰好等於 N 有幾組?
假設最小數字為 d 可能狀況為 d+(d+1)=N,d+(d+1)+(d+2)=N,
d+(d+1)+(d+2)+(d+3)=N 以下類推...
等同 2d+1=N,3d+(1+2)=N,4d+(1+2+3)=N ...
所以 (N-1)%2 ==0 或 (N-(1+2))%3 == 0 或...其中一項成立及代表一組解
程式碼跑起來也OK 但是時間超過了 online judge的限制,所以想問一下這邊大神們
是否有更有效率算法或加速的方式? 感恩!
程式新手還請鞭小力一點 > <
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.224.119
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1501327883.A.43D.html
推
07/29 20:00, , 1F
07/29 20:00, 1F
→
07/29 20:02, , 2F
07/29 20:02, 2F
→
07/29 20:04, , 3F
07/29 20:04, 3F
→
07/29 20:15, , 4F
07/29 20:15, 4F
感謝回覆 中位數想法好像不錯!! 我來想一下~
→
07/29 21:10, , 5F
07/29 21:10, 5F
→
07/29 21:11, , 6F
07/29 21:11, 6F
→
07/29 21:14, , 7F
07/29 21:14, 7F
→
07/29 21:15, , 8F
07/29 21:15, 8F
推
07/29 21:28, , 9F
07/29 21:28, 9F
→
07/29 21:38, , 10F
07/29 21:38, 10F
推
07/29 21:44, , 11F
07/29 21:44, 11F
感謝s大提醒! 之後會發在正確的地方!.此外用了中位數的算法還是無法在時間限制
內完成,看來我還是太弱了Orz
另有個自學新手的疑問:
像online judge這樣的超過時間限制狀況在實際應用面上常見嗎?
是否一定得想到有辦法克服為止,還是程式測驗僅是為了競賽,實際上太過鑽牛角尖?
希望有大大稍微開示一下(一直解不開根本無法好好入睡...像有什麼事情未完成一樣)
推
07/30 10:52, , 12F
07/30 10:52, 12F
樓上c大有點不一樣喔 前面意思是 N-3為3 的倍數,後面是N為3的倍數
※ 編輯: ddchris (1.200.224.119), 07/30/2017 11:00:46
推
07/30 12:43, , 13F
07/30 12:43, 13F
→
07/30 12:43, , 14F
07/30 12:43, 14F
推
07/30 13:37, , 15F
07/30 13:37, 15F
→
07/30 13:39, , 16F
07/30 13:39, 16F
→
07/30 13:41, , 17F
07/30 13:41, 17F
推
07/30 13:46, , 18F
07/30 13:46, 18F
→
07/30 13:46, , 19F
07/30 13:46, 19F
感謝超長整數大回應~(這id也太酷..應該很少人能比你長了(?
看來我還是建立完整的程式寫作觀念,
有多的閒暇時間再來做題目!
※ 編輯: ddchris (1.200.224.119), 07/30/2017 15:14:05
※ 編輯: ddchris (1.200.224.119), 07/30/2017 15:15:42
→
07/30 16:24, , 20F
07/30 16:24, 20F
→
07/30 21:52, , 21F
07/30 21:52, 21F
→
07/30 21:58, , 22F
07/30 21:58, 22F
→
07/30 22:00, , 23F
07/30 22:00, 23F
推
07/31 00:06, , 24F
07/31 00:06, 24F
→
07/31 00:06, , 25F
07/31 00:06, 25F
→
08/01 11:13, , 26F
08/01 11:13, 26F
→
08/01 11:13, , 27F
08/01 11:13, 27F
→
08/01 11:41, , 28F
08/01 11:41, 28F