作者ggirls (哥)
看板Python
標題[問題] 小於5的倍數即以5的倍數計
時間Fri Mar 31 22:48:01 2017
小於某數的倍數即以讓倍數計,的最簡表示各位會想到什麼呢?
例如 12 因為 > 5*2, <5*3 所以取 15
16 取 20…
目前我用 if else 花了四行,請問這有可能用一個數學式或 python式來表示嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.216.9
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1490971683.A.8F4.html
1F:→ Mchord: output = 5 * ((input % 5) + 1 ) 03/31 22:50
2F:→ Mchord: 啊好像不是mod應該要用商 03/31 22:51
3F:→ Mchord: output = 5 * ((input / 5) + 1 ) 不考慮5的倍數? 03/31 22:53
4F:→ zerof: lambda x: x - x%5 + (5 if x%5 else 0) 03/31 23:01
5F:推 physheepy: 改樓上的 (input % 5 > 0) ? 5*((input/5)+1) : input 03/31 23:02
6F:→ ggirls: 上面的結果,如果 input == 15 結果是 20 耶? 03/31 23:03
7F:→ ggirls: 我說的樓上是 Mchord,大家回太快了。 03/31 23:03
8F:→ physheepy: 啊~~乾尬了 我發現我寫的是c++ XD 03/31 23:04
9F:→ ggirls: python ok 的 03/31 23:06
10F:→ ggirls: 我一直在想數學上是不是有什麼「最小XX數的」。好像大家都 03/31 23:07
11F:→ ggirls: 也是用if...else? 03/31 23:07
12F:推 physheepy: a = 5*((input/5)+1) if input%5 >0 else input 03/31 23:08
13F:推 mars90226: 用math的ceil函數吧? 03/31 23:13
14F:推 bibo9901: (x+4)//5*5 03/31 23:14
15F:→ bibo9901: 當x=5k, (5k+4)//5*5 = 5k = x 03/31 23:17
16F:→ bibo9901: 當x=5k+1 or 5k+2 or 5k+4, 5k+5 <= (x+4) <= 5k+9 03/31 23:18
17F:→ bibo9901: ... 03/31 23:20
18F:→ bibo9901: 所以 (x+4)//5*5 = 5(k+1). 正好是你要的 03/31 23:20
19F:推 ErnieYang: 我會寫成(input+n-1)/n*n 如果input只有整數的話 04/01 11:57
20F:推 ErnieYang: CodesFights golfing經驗得道的結果 04/01 11:59
21F:推 ErnieYang: 耶 剛好跟樓上一樣 哈哈沒認真看 04/01 12:02
22F:推 vvbird: a = lambda x:int((x - 1)/5+1)*5 04/01 18:19
23F:→ vvbird: 這樣應該可以... 04/01 18:19
24F:推 edwar: 正整數的話 f1=lambda x,n:x+n-1-((x-1)%n); f1(x,5). 多 04/02 11:02
25F:→ edwar: 了一些加減法,但只用到一次除法. 負整數和浮點數要另外考慮 04/02 11:02
26F:→ edwar: . 04/02 11:02
27F:推 mikechan: ouput = (input +4) - (input + 4) % 5 04/02 15:28
28F:→ ggirls: 很好奇數理好的人是如何思考的?有人可以提示思考流程嗎 04/02 22:55
29F:→ ggirls: ? 04/02 22:55
30F:推 joeywayi: 除五套高斯函數加一? 04/03 02:42
31F:→ pkyosx: f = lambda x: int(math.ceil(x/5.0)) * 5 04/03 09:37