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

[PTA]龟兔赛跑

题目描述

  • 题源:龟兔赛跑 - PTA
  • 题意:乌龟与兔子在同一起点、同一时刻沿环形跑道赛跑。乌龟以 \(3\text{ m/s}\) 匀速前进;兔子以 \(9\text{ m/s}\) 奔跑,但每隔 \(10\) 分钟回头观察一次:若此时已领先乌龟,则停下休息 \(30\) 分钟,否则继续跑 \(10\) 分钟。乌龟从不休息。求经过 \(T\) 分钟后谁跑得更远(乌龟@_@,兔子^_^,平局-_-),并输出较远者的距离。

题解1:以距离入手

简单直叙式模拟,无任何思维技巧。

#include <stdio.h>
int main() {int T;scanf("%d", &T);int t = 0; // 当前时刻int turtle = 0; // 乌龟距离int rabbit = 0; // 兔子距离int rest = 0; // 兔子剩余休息时间while (t < T) { // 累加模拟t++;turtle += 3;if (rest) rest--; // 兔子仍在休息else rabbit += 9; // 兔子不在休息if (t % 10 == 0 && !rest ) { // 每跑10分钟检查一次if (rabbit > turtle) rest = 30; // 从下一分钟开始休息30分钟}}if (rabbit > turtle)printf("^_^ %d", rabbit);else if (rabbit < turtle)printf("@_@ %d", turtle);elseprintf("-_- %d", rabbit);return 0;
}

题解2:以时间入手

我们暴力打表找规律,并将龟兔的时间-距离图像可视化,可观察到以 \(90\) 分钟为一周期。
在这里插入图片描述
于是我们只需将 \(T\)\(90\) 取模,再根据时间判断即可。注意此时需正确处理兔子距离,因为兔子的距离并非与时间成正比,因此不能用兔子的时间乘以兔子的速度!

#include <stdio.h>
int main() {int T;scanf("%d", &T);int rest = T % 90;if (rest == 0 || rest == 30 || rest == 45 || rest == 60) {printf("-_- %d\n", 3 * T);}else if ((rest > 0 && rest < 30) || (rest > 45 && rest < 60)) {printf("^_^ %d\n", (T / 90) * 270 + ((rest <= 10) ? 9LL * rest : (rest <= 40) ? 90LL : (rest <= 50) ? 90LL + 9LL * (rest - 40) : (rest <= 80) ? 180LL : 180LL + 9LL * (rest - 80)));}else if ((rest > 30 && rest < 45) || (rest > 60 && rest < 90)) {printf("@_@ %d\n", 3 * T);}return 0;
}

或者我们暴力模拟兔子距离即可,但此方法倒不如方法1,得不偿失,因此就不展示了。

http://www.rkmt.cn/news/44878.html

相关文章:

  • 数组参数的函数传递
  • 【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂 P1什么是Mybatis P2第一个Mybatis程序
  • 《Spring Boot 实战:搭建 RESTful API 接口服务(含 Swagger + 异常处理)》
  • 《程序员高效工作流:5 款必备工具 + 时间管理方法,告别无效加班》
  • 详细介绍:深入解析Java并发编程中的Synchronized关键字工作原理与性能优化
  • 实用指南:【前端基础】20、CSS属性——transform、translate、transition
  • NOIP2025模拟4
  • jmeter基础测试1
  • 网页中的三次握手,四次挥手
  • 设计驱动开发实战
  • 性能学习
  • 实用指南:苹果手机误删照片?别慌,这些找回方法助你找回珍贵回忆
  • npm: 无法加载文件
  • 2025.11.9——1橙1绿
  • Python中a = b = 10的底层机制:从名字绑定到引用计数的完整拆解
  • Python中“赋值”说法是否规范?与C语言赋值的界限必须划清
  • Microsoft Agent Framework 接入DeepSeek的优雅姿势
  • 人工智能团队的示例角色
  • React18学习笔记(五) 【总结】常用的React Hooks函数,常用React-Redux Hooks函数和React中的组件通信 - 指南
  • flask:使用flask-migrate迁移数据表
  • docker 搭建 sql 环境
  • 硬件基础知识和典型应用-4G模组供电设计推荐
  • 计算机课程在线视频 —— 王道计算机考研 计算机网络
  • AI 测试 智能体30节课
  • 试了下KenLM
  • P14359 [CSP-J 2025] 异或和 / xor(官方数据)
  • 实现AI和BI整合的初步思路和探索
  • 对长度为 n 的数组 arr,调用 `merge_sort(a, 0, n-1)`,在排序过程中,`merge` 函数的递归调用次数大约是多少?
  • 解析SP3D VUE和PDMS RVM文件-PlantAssistant
  • VBA之Word应用第四章第三节:段落集合Paragraphs对象的手段(一)