题解 | 牛牛的数学作业
牛牛的数学作业
https://www.nowcoder.com/practice/6f5d239c34a7429cb325a3d836abc342
#include <stdio.h>
#include <math.h>
int main()
{
int T = 0;
scanf("%d", &T);
for (int i = 0; i < T; i++)
{
int num = 0;
long long range = 0;//大整形
double Var = 0; //double更精准,且后有小数
int sum = 0;
scanf("%d", &num);
long long Max = -1e18;
long long Min = 1e18; //要注意两个不要写反了
long long arr[10000] = { 0 };
for (int i = 0; i < num; i++)
{
int n = 0;
scanf("%d", &n);
arr[i] = n;
sum += n;
if (n > Max)
{
Max = n;
}
if (n < Min)
{
Min = n;
}
}
range = Max - Min;
double average = (double)sum / num; //因为都要加入方差的计算,且有前一个隐性提升
for (int i = 0; i < num; i++)
{
Var += pow((arr[i] - average),2)/num;
}
printf("%lld %.3f\n", range, Var);
}
return 0;
}
查看18道真题和解析