以下所有题目均来自杭电
2013 蟠桃记
一开始我自己的想法就是找规律,直接用数学公式代入计算就行
之后去搜了下别人的代码,发现大多数人用的是递归(一开始我连递归是什么都不知道的好伐?)
看了以后知道,其实就是累加而已,式子的后一项与前一项之间存在一个关系式,所以可以用递归方法来做。
感悟(题外话):
这部分是我自己想写给自己的啦,因为每天做题并没有什么人可以讲话,所以就用写写文章的方式来跟自己聊聊天,顺便梳理一下自己学到的东西,以后就可以经常整理起来看看了。
实际上我是第一次做这些ACM的题目,我甚至练C语言都没有学完,然而我觉得越早开始越好。
我觉得自己做题的效率不是很高,因为觉得虽然学到了东西,但是花费的时间太长。能不能利用较少的时间去尽量多学一些东西呢?
还有啊,我觉得时间上应该再多投入一点,对自己的要求再严格一些,是不是可以做的更好呢。
杭电2014
我用的题目方法就是先把最值找到,然后再计算平均值
代码如下:
#include
#define INF 100000
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int i=1,a,sum=0,min=INF,max=-INF;
for (i=1;i<=n;i++)
{
scanf("%d",&a);
if(a
max)
max=a;
sum+=a;
}
printf("%.2f\n",(double)(sum-min-max)/(n-2));
}
return 0;
}
empty
或者用另外一种寻找最值的方法
#include<stdio.h>
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int i=1,a,sum=0,min,max;
scanf("%d",&a);
min=a;max=a;
sum+=a;
for (i=1;i<n;i++)
{
scanf("%d",&a);
if(a<min)
min=a;
if(a>max)
max=a;
sum+=a;
}
printf("%.2f\n",(double)(sum-min-max)/(n-2));
}
return 0;
}