一、问题描述
在元宵节的活动现场,有一串环形排列的灯笼,共计 n 个。每个灯笼上伴随着一个谜底以及一个数字,这些数字分别为 a1,a2 ,…,an。
根据元宵节的传统,每个灯笼的谜底都是由相邻两个灯笼上的数字之和得出的。需要注意的是,在环形排列的灯笼中,首尾两个灯笼也是相邻的。
现在,请你计算并依次输出每个灯笼的谜底。
输入格式
第一行包含一个整数 n( 3≤n≤10^5),表示灯笼的数量。 接下来一行,包含 n 个整数 a1,a2,...,an(1≤ai≤10^5 ),表示每个灯笼上的数字.
输出格式
输出n个整数,分别表示第1,2,...,n个灯笼的谜底。
样例输入
8
1 2 3
样例输出
5 4 3
二、解析
- 理解环形排列:在环形排列中,首尾两个灯笼是相邻的。这意味着在计算每个灯笼的谜底时,需要考虑前一个灯笼和后一个灯笼的数字,但是对于第一个灯笼,其后一个灯笼是最后一个灯笼;对于最后一个灯笼,其前一个灯笼是第一个灯笼。
- 计算谜底:
- 创建一个新的列表
a
,用于存储每个灯笼的谜底。 - 遍历
ls
中的每个数字,对于每个数字ls[i]
:如果i
不是最后一个索引(即i != n-1
),则谜底是ls[i-1]
(前一个灯笼的数字)和ls[i+1]
(后一个灯笼的数字)的和。如果i
是最后一个索引(即i == n-1
),则谜底是ls[n-2]
(即ls[i-1]
,最后一个灯笼前一个灯笼的数字)和ls[0]
(第一个灯笼的数字)的和。 - 将计算出的谜底依次添加到
a
列表中。
- 创建一个新的列表
- 输出谜底:最后,将
a
列表中的谜底转换为字符串,并使用空格连接,然后输出。
关键在于理解环形排列的特性,即首尾相连。在计算谜底时,需要根据灯笼的位置来判断相邻的灯笼。对于最后一个灯笼,需要特别处理,将其与第一个灯笼视为相邻。
三、python代码
import os
import sys
# 请在此输入您的代码
n=int(input())
ls=list(map(int,input().split()))
a=[]
for i in range(n):
if i==n-1:
a.append(ls[i-1]+ls[0])
else:
a.append(ls[i-1]+ls[i+1])
print(" ".join(map(str,a)))