7-96 获奖的运气

某年,小明参加了程序设计竞赛,解题排名第二,运气好,评奖时各级获奖名额都向上取整,一等奖本来有1.36个名额,变成2个名额,于是获得了一等奖。

当然,有运气也还需要实力才能获奖。获奖名额是按参赛人数和获奖百分比计算的,且向上取整。对于一个实数d,向上取整得到的是不小于d的最小整数i,如:d=1.0,则i=1,d=1.1,则i=2。

给出参赛队伍总数n(n<=300),一、二、三等奖的获奖百分比p1,p2,p3,小明的排名m,请你确定运气好并有实力的他能获什么奖。

简单起见,一、二、三等奖的获奖名额按参赛队伍总数n及对应奖项的获奖比例p1,p2,p3直接确定,例如,n=17, p1=8%, p2=15%, p3=25%,则由17*8%=1.36,17*15%=2.55,17*25%=4.25,最终一、二、三等奖的获奖名额分别为2,3,5。

输入格式:

输入数据的第一行为一个正整数T(1<=T<=20), 表示测试数据的组数。然后是T组测试数据,每组测试数据的第一行输入2个正整数n,m(0<n,m<=300);第二行输入3个正整数p1,p2,p3(0<p1,p2,p3<100,p1+p2+p3<=100),含义见描述。

输出格式:

对于每组测试,在一行上输出小明所获奖项或sorry(很遗憾,不能获奖),若获一、二、三等奖则分别输出gold,silver,bronze。

输入样例:

2
17 2
8 15 25
200 99
8 15 25

输出样例:

gold
sorry

代码

#include<stdio.h>
double xs(double x)
{
    if(x>(int)x)
        return (int)(x+1);
    else
        return x;
}

int main()
{
    int T;
    double p1,p2,p3,n,m;
    scanf("%d",&T);
    while(T>0)
    {
        double first=0,secend=0,third=0;
        
        scanf("%lf %lf",&n,&m);
        scanf("%lf %lf %lf",&p1,&p2,&p3);
        
        first=xs(n*p1/100.00);
        secend=xs(n*(p1+p2)/100.00);
        third=xs(n*(p1+p2+p3)/100.00);
        
        if(0<m&&m<=first)
            printf("gold\n");
        else if(first<m&&m<=secend)
            printf("silver\n");
        else if(secend<m&&m<=third)
            printf("bronze\n");
        else
            printf("sorry\n");
        //printf("first=%lf,secend=%lf,third=%lf,m=%lf\n",first,secend,third,m);
        T--;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值