NEFU 1284 宋哥看比赛

宋哥看比赛

Problem:1284
Time Limit:1000ms
Memory Limit:65535K

Description

    在大家的帮助下,宋哥终于拿到了ICPC的奖牌,他非常的高兴,恰逢LOL的S7全球总决赛就要开赛了,宋哥决定去现场看一部分比赛,他现在要买票,已知现在共有32支队伍进行比赛,首先进行小组赛,每个小组四只队伍,分为八个小组,每个小组内进行双循环比赛,也就是每个小组进行六场比赛,之后每个小组的前两名晋级,之后晋级的16支队伍进行淘汰赛,进行八场比赛后决出八强,之后四场比赛决出四强,之后的两场比赛决出冠亚军,最后一场比赛决出冠军,共进行了63场比赛,我们将其按进行顺序编号0-62,宋哥买了一些场次的门票(可重复购买),众所周知,宋哥是非常有钱的,他买完门票之后发现只花费了0.01%的钱,宋哥想知道他买票前有多少钱,你能帮帮他么?

Input

    第一行包含一个数字T,代表样例组数。之后每一组的第一行包含五个整数xi,分别代表小组赛、八分之一决赛、四分之一决赛、半决赛和决赛的票价,之后的一行包含一个数字n,代表宋哥购买的票数,之后的一行包含空格分隔的n个数字,代表宋哥买的每一张票的场次号。

Limits:
1<=T<=1000
1<=n<=100
0<=xi<=1e16

Output

    对于每一组样例,请输出"Case #x: y",x为组数,y为答案。

Sample Input

2
1 2 3 4 5
2
1 49
1 1 1 1 1
7
5 2 0 1 3 1 4

Sample Output

Case #1: 30000
Case #2: 70000

Hint

Source

MGH

题意:

中文题。

思路:

先把比赛分为五种,从0-47的,48-55的,56-59的,60-61的和62的。然后记下五种比赛的价钱,对于每次输入的编号都对应比赛的价钱加起来,最后*10000输出就行了。

但是数据大小会爆long long ,我用的long double 避免了这个问题。不过当时调试用0.llf输出的时候是可以过样例,后来再调试的时候就输不出来了。(真玄学。。)

后来改成用cout就可以调试过了。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;

int main()
{
    int t,cas=1,n;
    long long a[10];
    int s[105];
    scanf("%d",&t);
    while(t--)
    {
        for(int i=1;i<=5;i++)
            scanf("%lld",&a[i]);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&s[i]);
            if(0<=s[i]&&s[i]<=47)
                s[i]=1;
            else if(48<=s[i]&&s[i]<=55)
                s[i]=2;
            else if(56<=s[i]&&s[i]<=59)
                s[i]=3;
            else if(60<=s[i]&&s[i]<=61)
                s[i]=4;
            else
                s[i]=5;
        }
        long double sum=0;
        for(int i=1;i<=n;i++)
        {
            if(s[i]==1)
                sum+=a[1];
            else if(s[i]==2)
                sum+=a[2];
            else if(s[i]==3)
                sum+=a[3];
            else if(s[i]==4)
                sum+=a[4];
            else
                sum+=a[5];
        }
        sum=sum*10000;
        printf("Case #%d: ",cas++);
        cout<<setiosflags(ios::fixed);
        cout<<setprecision(0)<<sum<<endl;
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值