某年,小明参加了程序设计竞赛,解题排名第二,运气好,评奖时各级获奖名额都向上取整,一等奖本来有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--;
}
}