当前位置: 首页 > ai >正文

Jogging(ABC249-A-竞赛题解)

        大家好,我是小C,一个每天嘻嘻哈哈的斜杠女青年🙋。我是一个爱自媒体,爱创作🔍的少儿编程从业者🖥️

        今天,给大家讲解一道题针对于编程初学者的竞赛真题 — Jogging,该题目来源于AtCoder平台的ABC编程竞赛,既然讲到AtCoder平台,那就简单介绍一下:

     AtCoder Beginner Contest(ABC)是AtCoder平台上的一个专门为初学者设计的编程竞赛。

    其中,AtCoder Beginner Contest(ABC)是AtCoder平台上的一个系列竞赛,旨在帮助初学者提高他们的编程能力。该竞赛分为四个难度级别:A、B、C和D,其中A级问题通常是最简单的,而D级问题则更加复杂‌。

    另外,AtCoder是日本最大的算法竞技网站,也是全球第二流行的算法竞技网站。它提供编程在线比赛、过往比赛提交、在线评测等服务‌。ABC竞赛因其适合初学者的特点,吸引了大量编程爱好者参与,成为提高编程技能的重要平台


        今天,我们来讲解一道题 — Jogging(慢跑),这是一道简单的数学题,但是我们可以使用自定义函数来解决这个问题,旨在培养学生模块化编程思想和代码复用能力。

题目描述小高和小李决定去慢跑。
小高重复以下动作:"以每秒B米的速度行走A秒,然后休息C秒"。
小李重复以下动作:"以每秒E米的速度行走D秒,然后休息F秒"。
当他们同时开始慢跑后X秒时,小高和小李谁走得更远?

输入格式输入从标准输入中,以下列格式给出
A B C D E F X

输出格式当他们同时开始慢跑后X秒时,如果小高走得更远,输出Takahashi,如果小李走得更远,输出Aoki,如果他们走的距离相同,输出Draw。

【数据范围】

  • 1≤A,B,C,D,E,F,X≤1001≤A,B,C,D,E,F,X≤100

  • 所有输入值均为整数

 以下给出三组数据测试样例,大家自行测试

输入样例1:4 3 3 6 2 5 10

输出样例1:Takahashi

样例解释:小高以每秒3米的速度行走4秒,然后休息3秒。小李以每秒2米的速度行走6秒,然后休息5秒。问开始慢跑10秒后,小高和小李谁走得更远? — 小高走得远!

先计算小高10秒后走了多少米?

答:小高走了4秒,休息了3秒,那么每经过这样一个(行走+休息)的过程需要4+3=7秒。当时间过去10s,在这个10秒里面,共包含了10/(4+3)=1个这样的过程。1个这样的过程里面包含4秒的行走时间,而小高1秒可以走3米,那么4秒共可以走4*3=12米,当经历完这样的一个过程之后,剩下10%(4+3)=3秒,又要重复同样的过程(行走+休息),注意,此时只剩下3秒,而小高要行走4秒,要以实际的时间为准,因此剩下的3秒都在行走,1秒行走3米,3秒共行走3*3=9米,因此小高总共的行走距离为12+9=21米。

再计算小李10秒后走了多少米?

答:小李走了6秒,休息了5秒,那么每经过这样一个(行走+休息)的过程需要6+5=11秒。当时间过去10s,在这个10秒里面,共包含了10/(6+5)=0个这样的过程,那么这个时候就说明一个(行走+休息)的过程加起来的总时间都没有达到给出的指定时间X秒,那么此时需要按照实际的行走时间计算,即行走了6秒,每秒走了2米,那么共走了2*6=12米。

因为21米>12米,因此小高行走的距离更远,输出Takahashi。


输入样例2:3 1 4 1 5 9 2

输出样例2:Aoki

样例解释:小高以每秒1米的速度行走3秒,然后休息4秒。小李以每秒5米的速度行走1秒,然后休息9秒。问开始慢跑2秒后,小高和小李谁走得更远? — 小李走得远!

先计算小高2秒后走了多少米?

答:小高走了3秒,休息了4秒,经过这样的一个过程(行走+休息)之后需要3+4=7秒。当时间过去2秒,2秒达不到这样的一个完整过程(3+4=7秒),又因为小高需要行走3秒,因此按照2秒来计算行走的距离,小高共行走2*1=2米。

再计算小李2秒后走了多少米?

答:小李走了1秒,休息了9秒,经过这样的一个过程(行走+休息)之后需要1+9=10秒。当时间过去2秒,2秒达不到这样的一个完整过程(1+9=10秒),又因为小李行走时间是1秒,因此按照1秒时间来计算,小李共行走1*5=5米。

因为2米<5米,因此小李的行走距离更远,输出Aoki。


输入样例3:1 1 1 1 1 1 1

输出样例3:Draw

样例解释:小高以每秒1米的速度行走1秒,然后休息1秒。小李以每秒1米的速度行走1秒,然后休息1秒。问开始慢跑1秒后,小高和小李谁走得更远? — 小李走得远!

嘻嘻,这个就很简单啦,既然小高和小李行走速度一样,而且行走的时间和休息的时间也一样,那么不管经过了多少秒,他们两个人行走的距离也是一致的,因此输出Draw。


解题思路:

        其实这道题可以这样来考虑,即:在X秒的时间里有几个(行走+休息)的过程,假设行走A秒,休息C秒,那么就含有X/(A+C)个这样的过程,而每个过程都包含了一个行走时间A秒,那么这么多个过程行走时间就是X/(A+C)*A,而又因为每秒的速度是B米,因此行走的距离为X/(A+C)*A*B米。注意,这个时候还没完,因为X/(A+C)可能会产生余数,这个余数有可能比行走时间A秒小,也有可能比行走时间A秒大,我们只需要取最小的那个时间乘上速度即可得到行走的距离,再加上之前算出来的距离,现在计算的结果才是行走的总距离。

        举一个具体的例子(剩余的时间大于行走时间):比如X=10,A=4,C=3,B=3,那么就包含10/(4+3)=1个这样的过程,1个这样的过程里面有1个行走时间A=4秒,因此行走时间为4秒,行走距离为4*3=12米,又因为X%(A+C)= 10 % (4+3) = 3秒,行走时间是4秒,因此实际上走了3*3=9米,注意,此时剩余的时间是小于行走时间的,因此要以剩余时间为准,总的行走距离为12+9=21米。

        再举一个例子(剩余时间小于行走时间):比如X=10,A=2,C=4,B=3,那么就包含10/(2+4)=1个这样的过程,1个这样的过程里面含有1个行走时间A=2秒,因此行走时间为2秒,行走距离为2*3=6米,又因为X%(A+C)=10%(2+4)=4秒,行走时间是2秒,因此实际上走了2*3=6米,注意,此时剩余时间是大于行走时间的,因此要以实际行走时间为准,总的行走距离为6+6=12米。


参考代码:

// ABC249 A - Jogging
/*
Takahashi和Aoki决定慢跑。Takahashi重复以下动作:“以每秒B米的速度行走A秒,然后休息C秒。”
Aoki重复以下动作:“以每秒E米的速度行走D秒,然后休息F秒。”当他们同时开始慢跑X秒后,谁领先?
*/
#include <bits/stdc++.h>
using namespace std;
// 以每秒B米的速度行走A秒,然后休息C秒, x秒后在哪里
int dist(int x, int a, int b, int c) {return x / (a + c) * (a * b) + min(x % (a + c), a) * b;
}
int main() {int A, B, C, D, E, F, X;cin >> A >> B >> C >> D >> E >> F >> X;int xg = dist(X, A, B, C);int xl = dist(X, D, E, F);if (xg > xl) cout << "Takahashi" << endl;else if (xg < xl) cout << "Aoki" << endl;else cout << "Draw" << endl;return 0;
}

http://www.xdnf.cn/news/3959.html

相关文章:

  • 【QT】QT安装
  • ​亚马逊云服务器技术全景解析:从基础架构到行业赋能​
  • 42. 接雨水(相向双指针/前后缀分解),一篇文章讲透彻
  • 从代码学习深度学习 - 目标检测前置知识(二) PyTorch版
  • uniapp 云开发全集 云开发的概念
  • 什么是原码、反码与补码?
  • 数据管理能力成熟度评估模型(DCMM)全面解析:标准深度剖析与实践创新
  • 【Java项目脚手架系列】第二篇:JavaWeb项目脚手架
  • js获取明天日期、Vue3大菠萝 Pinia的使用
  • 【Linux系统篇】:Linux线程互斥---如何用互斥锁守护多线程程序
  • MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能介绍
  • (undone) MIT6.S081 2023 学习笔记 (Day11: LAB10 mmap)
  • Redis数据结构ZipList,QuickList,SkipList
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》封面颜色空间一图的选图历程
  • 电磁气动 V 型球阀:颗粒状矿浆与煤黑水介质处理的革命性解决方案-耀圣
  • GAF-CNN-SSA-LSSVM故障诊断/分类预测,附带模型研究报告(Matlab)
  • 学习海康VisionMaster之亮度测量
  • 图像批量处理工具 界面直观易懂
  • TCP 与 UDP报文
  • Doo全自动手机壳定制系统
  • 【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)Zero-shot与Few-shot。
  • 基于 jQuery 实现灵活可配置的输入框验证功能
  • 模型 - Xiaomi MiMo
  • Sui 上线两周年,掀起增长「海啸」
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.3 相关性分析(PEARSON/SPEARMAN相关系数)
  • MongoDB入门详解
  • 永磁同步电机控制算法--基于PI和前馈的位置伺服控制
  • C 语言 第五章 指针(7)
  • LLM提示词设计及多轮对话优化策略在心理健康咨询场景中的应用研究
  • 从零开始学习RAG