作者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/cn.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