温馨提醒:吸烟有害健康,请勿尝试吸烟!
Peter 有 n n n 根烟,他每吸完一根烟就把烟蒂保存起来, k k k( k > 1 k>1 k>1)个烟蒂可以换一个新的烟,那么 Peter 最终能吸到多少根烟呢?
与某些脑筋急转弯不同的是,Peter 并不能从异次元借到烟蒂,抽完后再还回去。
每组测试数据一行包括两个整数 n , k n, k n,k( 1 < n , k ≤ 1 0 8 1 < n, k \le 10^8 1<n,k≤108)。
对于每组测试数据,输出一行包括一个整数表示最终烟的根数。
4 3
5
10 3
14
对于 100 % 100\% 100% 的数据, 1 < n , k ≤ 1 0 8 1
n,k=input().split()
n=int(n)
k=int(k)
ans=0
yantou=0
flag=True
while n:#只要还有烟就循环
n-=1#抽烟
yantou+=1#得到烟蒂
if yantou==k:#判断烟蒂数量是否达到目标值
n+=1#烟数量加1
yantou=0#烟蒂置零
pass
ans+=1#抽的烟加1
pass
print(ans)
模拟来做,注意烟蒂的个数进入if判断后要置零,之前模拟的错误,有一个样例没过,不知道咋回事。代码如下:
n,k=input().split()
sum=int(n)
num=0#记录一共吸了多少
flag=True
while flag:
if(sum>=int(k)):
num+=sum/int(k)#记录每次可以凑出多少置换的烟
sum=sum/int(k)#更新sum数据,下一次再进入循环与k比较
pass
else:
flag=False
pass
pass
ans=int(num)+int(n)#原来的烟加置换的烟
print(ans)