忙碌的售票员【算法赛】

小蓝是一家旅行社的售票员,他每天都很忙碌。
为什么呢?原因是这样的,当地文旅局与旅行社合作,所以旅行社能够以更加低廉的价格拿到票,然后旅行社再将这些票配套导游服务一起卖给顾客。虽然看起来十分划算,但是这可苦了我们的售票员小蓝。因为即使能够拿到更低价的票,但是票仍然需要从机器中打印出,文旅局的机器十分的老旧,但是旅行社的订单又十分的多,这就导致了小蓝需要耗费大量的时间来打印票据。

题解:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int t;
  scanf("%d",&t);
  while(t--)
  {
    long long x,y,a;
    scanf("%lld%lld%lld",&x,&y,&a);
    long long sum=0;
    long long m=a/3;
    long long n=a%3;
    if(a%3==0)
    {
      n=3;
      m--;
    }
    if(a!=0) // 添加条件判断,避免剩余票数为0时多进行一次循环
    {
      if(y>2*x) sum+=(x*3+(y-2*x))*m;
      else sum+=x*3*m;
      sum+=n*x;
    }
    printf("%lld\n",sum);
  }
  return 0;
}

代码解读:

  1. 程序首先读取测试数据的数量 t
  2. 然后进入一个循环,循环 t 次,每次处理一个测试数据。
  3. 在每次循环中,程序会读取三个整数 xya,分别表示打印一张票的时间、冷却时间和总票数。
  4. 接下来,程序会计算两个变量 mn,分别表示打印机器的完整周期数和剩余票数。
  5. 如果剩余票数 a 能被 3 整除,则将 n 设置为 3,并将 m 减 1。这样做是为了确保每个周期都是完整的。
  6. 接着程序根据给定的条件计算总时间 sum
    • 如果冷却时间大于两倍的打印时间,那么每个周期中的冷却时间将超过打印时间,因此在每个完整的周期中,我们可以用 (x * 3 + (y - 2 * x)) * m 来计算打印时间。
    • 否则,我们只需将每个完整的周期中的打印时间累加到总时间中即可,即 x * 3 * m
    • 最后,我们再加上剩余票数的打印时间 n * x
  7. 最后,程序输出总时间 sum
  8. 循环结束后,程序结束执行。
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌猫鲜生

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值