题目描述
爱丽丝要完成一项修剪灌木的工作。
有N棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为0厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。
灌木每天从早上到傍晚会长高1厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是0厘米。爱丽丝想知道每棵灌木最高长到多高。
输入格式
一个正整数N
样例输入
3
输出格式
输出N行,每行一个整数,第1行表示从左到右第i棵树最高能长到多高。
样例输出
4 2 4
思路
如下图:
某灌木长到的最高高度可以看作爱丽丝回到这个灌木的距离(爱丽丝的速度和数生长的速度一致),
而回去的方向有两种,向左和向右,我们只需计算这个灌木距离左边端点和右边端点的距离,取长的一个,因为是往返,再乘以2即可得出最远距离,这个即为每个灌木可以长到的最高高度
代码实现
n = int(input())
for i in range(1,n+1):
l_dist = i-1#左边的距离
r_dist = n-i#右边的距离
print(2*max(l_dist, r_dist))