题目描述
在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。
第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。
注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。
给定第一天各个商店的菜价,请计算第二天每个商店的菜价。
输入格式
输入的第一行包含一个整数n,表示商店的数量。
第二行包含n个整数,依次表示每个商店第一天的菜价。
输出格式
输出一行,包含n个正整数,依次表示每个商店第二天的菜价。
样例输入
8
4 1 3 1 6 5 17 9
样例输出
2 2 1 3 4 9 10 13
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,第一天每个商店的菜价为不超过10000的正整数。
- Java版本
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static Scanner sc;
static int n;//商店个数
static int[] total; //存放平均值
static List<Integer>list; //初始值
public static void main(String[] args){
sc=new Scanner(System.in); //输入流
n=sc.nextInt(); //输入商品个数
list=new ArrayList<>();
total=new int[n];
for(int i=0;i<n;i++){
list.add(sc.nextInt());
}
for(int i=0;i<list.size();i++){
if(i==0){
total[i]=(list.get(i)+list.get(i+1))/2;
System.out.print(total[i]+" ");
}
else if(i==list.size()-1){
total[i]=(list.get(i)+list.get(i-1))/2;
System.out.print(total[i]);
}
else{
total[i]=(list.get(i-1)+list.get(i)+list.get(i+1))/3;
System.out.print(total[i]+" ");
}
}
}
}
- C++版本
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,A[1005],B[1005];
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",&A[i]);
B[0]=(A[0]+A[1])/2;
B[n-1]=(A[n-1]+A[n-2])/2;
for(int i=1;i<n-1;++i)
B[i]=(A[i-1]+A[i]+A[i+1])/3;
for(int i=0;i<n;++i)
printf("%d ",B[i]);
return 0;
}
---------------------
转自:https://blog.youkuaiyun.com/richenyunqi/article/details/83387532
- Python版本
n = int(input())
a = list(map(int,input().split())) # 0~n-1
b = []
for i in range(n):
b.append(i)
b[0]=int((a[0]+a[1])/2)
b[n-1]=int((a[n-1]+a[n-2])/2)
for i in range(1,n-1): # 1~n-2
b[i]=int((a[i-1]+a[i]+a[i+1])/3)
for i in b:
print(i,end=' ')
---------------------
转自:https://blog.youkuaiyun.com/weixin_42238674/article/details/83309605