Re: [問題] for 迴圈加法問題

看板C_and_CPP作者 (pziyout)時間13年前 (2012/12/31 09:27), 編輯推噓4(4011)
留言15則, 6人參與, 最新討論串2/4 (看更多)
一個迴圈也行: int i , n ; ostringstream ostr ; n = 10 ; for ( i = 1 ; i <= n ; ++i ) { ostr << ( i > 1 ? "+" : "" ) << i ; cout << ostr.str() << "=" << i*(i+1)/2 << endl; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.25.21

12/31 12:39, , 1F
i等於1的狀況適合拿到for前面做
12/31 12:39, 1F

12/31 12:40, , 2F
而且效能瓶頸是在IO XD
12/31 12:40, 2F

12/31 12:48, , 3F
套公式沒比較快, 直接加上來就好了
12/31 12:48, 3F

12/31 15:15, , 4F
有兩隻腳何必只用一隻腳跑步…
12/31 15:15, 4F

12/31 16:05, , 5F
這樣寫簡單好懂,我覺得挺不錯啊
12/31 16:05, 5F

12/31 16:07, , 6F
這樣寫確實有比較快
12/31 16:07, 6F

12/31 16:07, , 7F
測試用程式碼 http://codepad.org/Y2ZE0F8d
12/31 16:07, 7F

01/02 01:07, , 8F
好像有人誤解我的意思... 用一個for迴圈其實並不需要
01/02 01:07, 8F

01/02 01:08, , 9F
用公式
01/02 01:08, 9F

01/02 01:50, , 10F
用不用公式在這裡對效能的影響應該是微乎其微。
01/02 01:50, 10F

01/02 10:24, , 11F
重點是..這個公式寫法可能導致 over flow.
01/02 10:24, 11F

01/02 12:29, , 12F
直接用加的可以容許的範圍是用公式的 2^(1/2) 倍。
01/02 12:29, 12F

01/02 12:32, , 13F
如果要避免 overflow,就要避免輸入範圍超出限制。
01/02 12:32, 13F

01/02 22:30, , 14F
我會用stringstream來存輸出 其實文字和加法都可以複製利用
01/02 22:30, 14F

01/02 22:32, , 15F
不用每次都重算加法和生成字串 io只要最後一次全部印出就好啦
01/02 22:32, 15F
文章代碼(AID): #1GuEdo0Y (C_and_CPP)
文章代碼(AID): #1GuEdo0Y (C_and_CPP)