PAT (Basic Level) Practice (中文)- 1077 互评成绩计算(20 分)

题目链接:点击打开链接

题目大意:略。

解题思路:四舍五入到整数小技巧:

printf("%d",(int)(x+0.5)); // 比下面这种写法有时更加精确
 
printf("%.0f",double(x));

AC 代码

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        for(int q=0;q<n;q++)
        {
            int a[n+10],k=0,c;
            double rs,ans=0;
            scanf("%d",&c); rs+=c;
            for(int i=1;i<n;i++)
            {
                scanf("%d",&c);
                if(c>=0&&c<=m)
                {
                    a[k++]=c;
                }
            }
            sort(a,a+k);
            for(int i=1;i<k-1;i++) ans+=a[i];
            printf("%d\n",int((ans/(k-2)+rs)/2+0.5));
        }
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/dream_weave/article/details/81263639