2017-8-17ACM训练题

以下所有题目均来自杭电

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;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值