java实现第六届蓝桥杯移动距离
2024-09-03 23:59:33
移动距离
题目描述
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范围内
w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n 两楼间最短移动距离。
例如:
用户输入:
6 8 2
则,程序应该输出:
4
再例如:
用户输入:
4 7 20
则,程序应该输出:
5
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int length = input.nextInt();
int one = input.nextInt();
int two = input.nextInt();
int ox=one/length;
int oy=one%length;
int tx=two/length;
int ty=two%length;
if(one%length==0){
oy=length;
}else{
ox=ox+1;
}
if(two%length==0){
ty=length;
}else{
tx=tx+1;
}
if(ox%2==0){
oy=length-oy+1;
}
if(tx%2==0){
ty=length-ty+1;
}
System.out.println(Math.abs(ox-tx)+Math.abs(oy-ty));
}
最新文章
- ASP.NET Web API 过滤器创建、执行过程(二)
- awk 统计出现次数--转
- linux忘记mysql密码找回方法
- ArrayList、HashTable、List、Dictionary的演化及如何选择使用
- javascript中怎样验证密码是否含有特殊符号、数字、大小写字母,长度是否大于6小于12
- VirtualBox安装Fedora20
- 161207、高并发:java.util.concurrent.Semaphore实现字符串池及其常用方法介绍
- 查询SQL中字符串里有多少个逗号
- mac 下nginx加入开机启动
- 开机自动挂载 VHD 的方法
- rtmp流媒体搭建的所需安装包
- Java的虚方法
- Codeforces 461D. Appleman and Complicated Task 构造,计数
- Linux并发与同步专题
- FortiGate下用户访问特定网址不通
- c# 封装 Request操作类
- <;操作系统>;进程和线程
- C# Activator和new的区别
- Leetcode题库——40.组合总和II
- 《Linux系统编程(第2版)》