任务概述
数值分析课程的第三个实验,CYLL想要计算免费午餐菜单n道菜中每一道菜 di 的真实价格 pi 。每道菜的标价 ci=0.5pi−1+2pi+0.5pi+1 。其中, −1≤i≤n,p−1=pn−1,pn=p0 .
函数接口定义:
void Price( int n, double p[] );
其中n表示菜的种类数, 2<n≤10000 。数组p[]存储了每一道菜的标价,将计算得到的真实价格存储在p[]中返回。
裁判程序样例:
#include <stdio.h>
#define Max_size 10000 /* max number of dishes */
void Price( int n, double p[] );
int main()
{
int n, i;
double p[Max_size];
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%lf", &p[i]);
Price(n, p);
for (i=0; i<n; i++)
printf("%.2f ", p[i]);
printf("\n");
return 0;
}
/* Your function will be put here */
输入样例:
12 23.64 17.39 12.77 16.62 10.67 14.85 12.68 26.90 28.30 15.59 37.99 23.18
输出样例:
9.20 5.58 3.24 7.00 1.99 6.36 2.25 10.01 11.52 0.50 17.65 4.88
算法思路
根据题意,可以列出如下方程组:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢20.50⋮00.50.520.5⋮0000.52