每周一题 楼号m和n之间的最短移动距离

[问题描述]

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

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

比如:当小区排号宽度为6时,开始情形如下:

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 …..

我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)

输入为3个整数w m n,空格分开,都在1到10000范围内

要求输出一个整数,表示m n 两楼间最短移动距离。

[样例输入]

6 8 2

[样例输出]

4

[样例输入]

4 7 20

[样例输出]

5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(b>c)
{
int t=b;b=c;c=t;
}
int y=abs((b-1)/a-(c-1)/a);
int x=abs((((b-1)%(2*a))<=a?(b%(2*a)):(a-(b-1)%a))-(((c-1)%(2*a))<=a?(c%(2*a)):(a-(c-1)%a)));
printf("%d",x+y);
return 0;
}
/***************************************
* 小柳学渣
* 2019/1/3
***************************************/
Newer Post

利用Excel解决日期问题

例如,我出生于1998年2月16日,那今天,2019年1月22日是我出生之后的第多少天呢。 如果用C语言去解决这个问题,会很麻烦,要有很多判断,例如闰年什么的。所以我们可以考虑用Excel去解决这个问题。 首先,把A1和A2单元格设置成日期格式。 然后,在单元格里填写日期。 最后,通过计算,得出 …

继续阅读
Older Post

PAT乙级真题 数素数

1013 数素数 (20 分) 令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 …

继续阅读