2017-8-17ACM训练题

来源:互联网 发布:全国地址数据库 编辑:程序博客网 时间:2024/05/16 18:01

以下所有题目均来自杭电

2013 蟠桃记

一开始我自己的想法就是找规律,直接用数学公式代入计算就行

之后去搜了下别人的代码,发现大多数人用的是递归(一开始我连递归是什么都不知道的好伐?)

看了以后知道,其实就是累加而已,式子的后一项与前一项之间存在一个关系式,所以可以用递归方法来做。

感悟(题外话):

这部分是我自己想写给自己的啦,因为每天做题并没有什么人可以讲话,所以就用写写文章的方式来跟自己聊聊天,顺便梳理一下自己学到的东西,以后就可以经常整理起来看看了。

实际上我是第一次做这些ACM的题目,我甚至练C语言都没有学完,然而我觉得越早开始越好。

我觉得自己做题的效率不是很高,因为觉得虽然学到了东西,但是花费的时间太长。能不能利用较少的时间去尽量多学一些东西呢?

还有啊,我觉得时间上应该再多投入一点,对自己的要求再严格一些,是不是可以做的更好呢。

杭电2014

我用的题目方法就是先把最值找到,然后再计算平均值

代码如下:

#include#define INF 100000int 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(amax)        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;}





原创粉丝点击