Update

  • \(\texttt{2020.10.6}\) 修改了一些笔误。

Content

模拟一个核载 \(34\) 人的巴士上有 \(k\) 个人时的巴士的状态。

每个人都会优先选择有空位的最后一排最左侧一个空位入座。

数据范围:\(0\leqslant k\leqslant 34\)。

Solution

有 \(6\) 行,所以按 \(6\) 行来分类讨论。

Part 1 第一行

第一行只需要输出一串字符串就行了,不需要多讲。

由于第六行输出的东西和第一行一模一样,故之后不做详细讲解。

Part 2 第二行

第二行开始一直到第五行都需要考虑到车上的人的情况。我们先来看这一行。

首先得要考虑最后一排的情况(因为最后一排有 \(4\) 个人)。

  • 如果 \(k=0\),那么最后一排上的这一列不坐人。
  • 否则,这里肯定会坐人。

然后,还有坐在这一列的人数 \(p_2=\left\lceil\dfrac{\max\{0,k-4\}}{3}\right\rceil\),没坐在这一列的人数则是 \(10-p_2\)。这个可以自己去推算。

Part 3 第三行

首先还是考虑最后一排的情况。

  • 如果 \(k<2\),那么这里不坐人。
  • 否则,这里肯定坐人。

然后,还有坐在这一列的人数 \(p_3=\left\lceil\dfrac{\max\{0,k-5\}}{3}\right\rceil\),没坐在这一列的人数则是 \(10-p_3\)。

由于第五行与第二、三行的情况类似,故之后不做详细讲解。

Part 4 第四行

首先还是考虑最后一排的情况。

  • 如果 \(k<3\),那么这里不坐人。
  • 否则,这里肯定坐人。

然后这里就是过道了,直接输出 .(经检验总共有 \(22\) 个)。

其他的不做多讲。

注意,除了我讲的东西要输出外,每一行后面可能还会有一些多余的东西,它们也要输出。

Code

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std; int main() {
int k;
scanf("%d", &k);
printf("+------------------------+\n|");
if(!k) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 4) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 4) / 3.0); ++i) printf("#.");
printf("|D|)\n|");
if(k < 2) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 5) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 5) / 3.0); ++i) printf("#.");
printf("|.|\n|");
if(k < 3) printf("#.");
else printf("O.");
for(int i = 1; i <= 22; ++i) printf(".");
printf("|\n|");
if(k < 4) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 6) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 6) / 3.0); ++i) printf("#.");
printf("|.|)\n+------------------------+");
}

最新文章

  1. ajax 同步和异步
  2. shell 脚本之获取命令输出字符串以及函数参数传递
  3. Bible
  4. 亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容
  5. java 22 - 5 多线程之获取和设置线程对象的名称
  6. SQL数据库基础(七)
  7. virtualbox -centos ping不通外网
  8. [Leetcode][Python]45: Jump Game II
  9. nginx源代码分析--配置文件解析
  10. sql查询数据库表中重复记录方法
  11. angular实现的文字上下无缝滚动
  12. Java 学习笔记 (八) Java 变量
  13. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)
  14. JavaScript事件的属性列表
  15. List数组
  16. 二进制学习 wsample01a.exe
  17. react-native 获取组件的宽度和高度
  18. TFS 安装遇到的问题
  19. 牛客练习赛 小A与最大子段和 解题报告
  20. p2042 维修数列(SPLAY)

热门文章

  1. JavaScript高级程序设计读后感(一)之零碎知识点查漏补缺
  2. 【JavaSE】IO(1)-- File类
  3. 关于Jmeter线程组的设置,看这一篇就够了
  4. Cycling City CF521E
  5. 解决mac电脑耳机/外放突然无声音
  6. TOMCAT 搭建
  7. 【题解】洛谷P1001 A+B Problem
  8. 10 — springboot整合mybatis — 更新完毕
  9. Android系统编程入门系列之硬件交互——多媒体麦克风
  10. LeetCode替换空格