NBUT 1449 Annie

  • [1449] Annie

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • Annie is a kawaii loli in League of LegendsHigh Councilor Kiersta Mandrake said that Annie may be one of the most powerful champions ever to have fought in a Field of Justice.

    Annie has an ability, Molten Shield(熔岩护盾). This shield increases Annie's armor and magic resist and damages enemies who hit Annie with basic attacks.

    This ability keeps for 5 seconds and cost 10 seconds to cold down to cast nextMolten Shield.

    We assume that Annie casts the Molten at the very beginning of 0 second. And she casts the next Molten Shield when it colds down immediately. The magic damage of the base attack when she is under the shield is 60 + (0.2 * Spell Power).

    We give you the spell power of Annie's and the time of enemies' each base attack. You should tell me how much damage Anniemade via the Molten Shield.

  • 输入
  • This problem contains several cases.
    The first line of each case contains two integers N and S, indicate the number of attack times and the spell power of Annie's. (0 < N ≤ 1000, 0 < s ≤ 1000)
    Then N lines followed. Each line is a decimal number that indicates the time moment of that base attack. The decimal number will not exceeds 1000.
  • 输出
  • You should output the magic damage via the Molten Shield. 1 decimal places reserved.
  • 样例输入
  • 5 301
    2.00
    5.01
    5.00
    8.00
    14.03
  • 样例输出
  • 360.6
  • 提示
  • 来源
  • XadillaX

    题目意思是说,黑暗之女-安妮的E技能是一个可以造成一个魔法伤害的盾,开了盾之后就能给攻击者一个魔法伤害,盾能持续5秒,需要冷却10秒才能重新开盾,给出攻击的时间,求安妮能够造成多大的魔法伤害。
    注意:盾从开的那一刻开始冷却,与持续时间不冲突,这里可能造成误区。题目意思是,每10秒钟开一次盾,不管有没有攻击者。。。

    #include<cstdio>
    #include<cstring>
    const int mx = 1000+10;
    
    double t[mx];
    int n,S;
    int main()
    {
        while(~scanf("%d%d",&n,&S))
        {
            int cnt=0;
            for(int i=0;i<n;i++)
            {
                scanf("%lf",&t[i]);
                int a=(int)t[i];
                a%=10;
                if(a==5 && (int)t[i]<t[i]) 
                    continue;    
                //(int)有可能是向下取整,如果是向下取整刚好等于5这种情况要排除
                if(a>=0 && a<=5)    
                    cnt++;      //在盾的持续时间内攻击,累加器 ++ 
            }
            printf("%.1lf\n",(60+(S*0.2))*cnt);
        }
        return 0;
    }
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值