欢迎光临
我们一直在努力

蓝桥杯LV1 | 攻击次数

问题描述

小蓝正在玩一个游戏,游戏中小蓝要控制自己的三个英雄来攻击一个敌人。敌人初始的血量为 20252025。

小蓝的第一个英雄攻击力恒定,每回合攻击 55 的血量。

小蓝的第二个英雄拥有一些技能,奇数回合触发,攻击 1515 的血量,偶数回合攻击 22 的血量。

小蓝的第三个英雄拥有一些道具,当回合数除以 33 的余数为 11 时攻击 22 的血量;当回合数除以 33 的余数为 22 时攻击 1010 的血量;当回合数除以 33 的余数为 00 时攻击 77 的血量。

游戏从第 11 回合开始。不考虑敌人对小蓝英雄的攻击,敌人的血量也仅受攻击的影响。如果敌人的血量小于等于零,则游戏结束。

请问到第几回合游戏结束?

解题思路

1. 直接模拟每一回合,用 count 记录当前回合
2. 根据当前回合,分别算出英雄二(b)、英雄三(c)这一轮的伤害
3. 三个英雄伤害加起来,扣掉敌人血量,判断血量是否小于等于 0,如果满足直接跳出循环
4. 如果没扣完,回合数 +1,继续下一轮

完整代码

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

  int n=2025;//初始血量

  int count=1;//回合数

  int a=5,b,c;//a英雄攻击力恒定,可以直接给定量

  while(n>0)//当敌人血量归0结束攻击

  {

    if(count%2!=0)

    {

      b=15;

    }

    else

    {

      b=2;

    }

    if(count%3==1)

    {

      c=2;

    }

    else if(count%3==2)

    {

      c=10;

    }

    else if(count%3==0)

    {

      c=7;

    }

    n=n-(a+b+c);//血量减去攻击

    if(n<=0)//必须写在回合数加之前,如果在这一回合血量就攻击完了是直接结束

    {

      break;

    }

    count++;

  }

  printf("%d\\n",count);

  return 0;

}

踩坑记录

重点:一定要把判断写在回合数加之前,不然退出循环会多加一次,而且这个判断条件必须要写

赞(0)
未经允许不得转载:171主机测评 » 蓝桥杯LV1 | 攻击次数
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址