py3第三个点过不了

P1150 Peter 的烟

Lzj031103 @ 2022-03-21 19:13:54

a=input().split()

n=int(a[0]);k=int(a[1])

b=n//k

c=(n%k+b)//k

print(n+b+c)

一定要用循环吗,这个答案可以改进吗,第三个点过不了


by Terrible @ 2022-03-21 19:28:45

@Lzj031103

你这个压根就是错的吧。

应该这么写:

a,b=map(int,input().split())
print(a+(a-1)//(b-1))

by Lzj031103 @ 2022-03-21 19:37:24

@Terrible

我第三行想的是:他一开始抽完的烟可以再换多少根

第四行是:用一开始抽完换完之后剩余的烟头(%取余数)再加上换的烟的烟头再去换

然后就发现如果我这样写就会进到一个循环当中

大佬,能解释一下您给的输出函数里面的内容吗,没有理解为什么那个a-1以及b-1的作用,非常感谢


by Terrible @ 2022-03-21 19:43:26

@Lzj031103 看一下第一篇题解

hack数据:

15 2

你的输出:26

实际上应该是:

\begin{matrix}15+&(\frac{15-1}{2})+&\frac{7+1}{2}+&2+1=29\\&7&4\end{matrix}

by Lzj031103 @ 2022-03-21 19:43:31

@Lzj031103

我这个思路一开始应该就是存在问题的,应该是碰巧对了那几个测试点


by Terrible @ 2022-03-21 19:46:37

如果怕错的话就用循环模拟一下,比较稳。


by Lzj031103 @ 2022-03-21 19:46:42

@Terrible

奥奥,我懂了,我一开始去看那篇题解还不明白,看到您的代码结合起来才明白,谢谢大佬


|