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