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

蓝桥杯 8. 移动距离

移动距离

原题目链接

题目描述

X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。楼房的编号为 1, 2, 3, ⋯⋯

当排满一行时,从下一行相邻的楼反方向排号。

例如,当小区排号宽度为 6 时,排列如下:

1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 ...

问题

已知两个楼号 mn,需要求出它们之间的最短移动距离(只允许水平和垂直方向移动,不能斜着走)。


输入描述

输入一行,包含 3 个整数:

  • w:排号宽度;
  • m:楼号 m;
  • n:楼号 n。

数据范围:

  • 1 ≤ w, m, n ≤ 10000

输出描述

输出一个整数,表示 mn 两楼之间的最短移动步数


输入输出样例

示例 1

输入

6 2 8

输出

4

示例 2

输入

4 7 20

输出

5

c++代码

#include<bits/stdc++.h>using namespace std;int main() {int w, m, n, i, j, k, l;cin >> w >> m >> n;i = m / (w + 1), k = n / (w + 1);if (i % 2 == 0) j = m - i * w - 1;else j = (w - 1) - (m - (i * w) - 1);if (k % 2 == 0) l = n - k * w - 1;else l = (w - 1) - (n - (k * w) - 1);cout << abs(i - k) + abs(j - l);return 0;
}//by wqs

题目解析

一个结论
对于宽度为w的数字m

他在第m / (w + 1)行

如果行为偶数,它在第m - i * w - 1列

如果行为奇数,它在第(w - 1) - (m - (i * w) - 1)列

注意从下标0开始。

最后答案就是abs(i - k) + abs(j - l)

相关文章:

  • Angular开发经常涉及到组件间传递参数,用原生js开发时,如何解决这些问题?
  • 使用 Spring Boot 进行开发
  • 印刷设备管理绩效考核制度与设备优化路径
  • Linux: 如何在VMware上安装Ubuntu操作系统
  • 72.评论日记
  • WPF定义扩展属性和依赖属性
  • Prometheus、Zabbix 和 Nagios 这三个工具的对100个节点的部署设计的信息流
  • WPF 实现PLC数据采集
  • A. Ambitious Kid
  • 网络原理由浅到深
  • 打破云墙:多云环境中的DevOps实践指南
  • qt之开发大恒usb3.0相机一
  • MySQL初阶 | 表的增删查改
  • 关于聚簇索引
  • 利用Arcgis自己绘制shp文件
  • 基于MTF的1D-2D-CNN-BiLSTM-Attention时序图像多模态融合的故障分类识别(Matlab完整源码和数据),适合研究学习,附模型研究报告
  • 若干查找算法
  • 【漫话机器学习系列】224.双曲正切激活函数(Hyperbolic Tangent Activation Function)
  • Maven进阶
  • Myweb项目——面试题总结
  • 第二十届中国电影华表奖揭晓!完整获奖名单来了
  • 讲座|现代女性在面对生育、事业与家庭之间的复杂抉择
  • 我驻美使馆:中美并没有就关税问题磋商谈判,更谈不上达成协议
  • 美银证券前董事总经理胡霁光履新,任摩根士丹利中国区副主席
  • 2025年两院院士增选工作启动,名额均不超过100名
  • 上海开展2025年“人民城市 文明风采”群众性主题活动