【蓝桥杯2018JavaB】螺旋折线
如图p1.png所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。
例如dis(0, 1)=3, dis(-2, -1)=9
给出整点坐标(X, Y),你能计算出dis(X, Y)吗?
【输入格式】
X和Y
对于40%的数据,-1000 <= X, Y <= 1000
对于70%的数据,-100000 <= X, Y <= 100000
对于100%的数据, -1000000000 <= X, Y <= 1000000000
【输出格式】
输出dis(X, Y)
【输入样例】
0 1
【输出样例】
3
还是先提供我自己的思路,这种题我觉得思路很清晰的,因为方向是固定的,这里找到这样的规律:
- 方向顺序是固定的。向左->向上->向右-向下,一直这样循环
- 每转换两次方向,在一个方向上的线的长度会加一
用这两个规律就足够了,让点从0开始找,while(true),找到了就打印和结束
public class Main{public static void main(String[] args) { Scanner sc=new Scanner(System.in);int sum=0,a=0,b=0,len=1,lencount=0;int x=sc.nextInt();int y=sc.nextInt();while(true) {while(lencount<len) {a--;lencount++;sum++;if(a==x&&b==y) {System.out.println(sum);return;}}lencount=0;while(lencount<len) {b++;lencount++;sum++;if(a==x&&b==y) {System.out.println(sum);return;}}lencount=0;len++;while(lencount<len) {a++;lencount++;sum++;if(a==x&&b==y) {System.out.println(sum);return;}}lencount=0;while(lencount<len) {b--;lencount++;sum++;if(a==x&&b==y) {System.out.println(sum);return;}}lencount=0;len++;}}
}
接下来提供别人的思路
dis(0, 1)=3
dis(-2, -1)=9
dis(1, 1)=4
暴力解法:超时 -10^9 ≤ x、y ≤ 10^9 -> 爆int x↓y↑、x↑y↓、x↓y↑、x↑y↓
public class A07_螺旋折线 {// 以 右下角 对角线上的点 为 参照点,测算给定的点到参照点要走的距离public static void main(String[] args) throws FileNotFoundException {Scanner sc = new Scanner(System.in);long X = sc.nextLong(), Y = sc.nextLong();long d = 0; // 距离long n = 0; // 第几圈if (Y > 0 && Math.abs(X) <= Y) { // 点在上面的横线上n = Y; // 等差数列有多少项? Y项d = (Y - X) + (2 * Y); // X的最大值是Y,第一、四象限的距离---2Y} else if (X > 0 && Math.abs(Y) <= X) { // 点在最右边的横线上n = X;d = Y + X;} else if (Y <= 0 && X >= Y - 1 && X <= -Y) { // 点在最下边的横线上n = -Y;d = -(-Y - X);} else if (X < 0 && Y >= X + 1 && Y <= -X) { // 点在最左边的横线上n = -X - 1;d = -(Y - X - 1 - 2 * X - 1);}System.out.println(sum(1L, 2 * n, 1) * 2 - d);}/*** 等差数列求和* * @param a0 首项* @param n 项数* @param d 公差* @return*/private static long sum(long a0, long n, int d) {return (2 * a0 + (n - 1) * d) * n / 2;}
}
【蓝桥杯2018JavaB】螺旋折线相关推荐
- 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - G.螺旋折线
螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)= ...
- 题目 2285: [蓝桥杯][2018年第九届真题]螺旋折线(数论+思维)
题目: 题目描述 如图所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, ...
- 2018蓝桥杯省赛---java---B---7(螺旋折线)
题目描述 标题:螺旋折线如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis ...
- 蓝桥杯第九届省赛JAVA真题----螺旋折线
标题:螺旋折线 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...
- 蓝桥杯:2018年第九届蓝桥杯省赛B组第七题—螺旋折线
题目描述 如图所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, dis ...
- Java实现第九届蓝桥杯螺旋折线
螺旋折线 题目描述 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0 ...
- 第九届蓝桥杯 螺旋折线
标题:螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...
- [蓝桥杯][2018年第九届真题] 递增三元组、螺旋折线、日志统计、全球变暖、乘积最大
个人题解链接,历届试题,正在更新中~ 题目目录 递增三元组 螺旋折线 日志统计 全球变暖 乘积最大 递增三元组 给定三个整数数组 A = [A1, A2, - AN], B = [B1, B2, - ...
- 【Scratch】青少年蓝桥杯_每日一题_9.09_画圆形渐变螺旋
用心写好每一篇文章 效果图 一.题目背景 本题是Scratch编程问题,出现在第十届蓝桥杯国赛赛中. 二.编程实现 绘制一个颜色变化的圆形螺旋﹐画螺旋与画圆形的方法类似.提示∶ 1.画圆形的方法:前进 ...
最新文章
- windows加载符号小计
- 流量控制与可靠传输机制
- php aws s3查看所有文件_国内AWS没有文件系统服务,快来看如何通过EC2挂载S3存储桶替代...
- 7.Eclipse中创建新Maven项目
- python学习笔记(十三)标准库heapq
- wps计算机一级考试提纲,2017计算机一级考试大纲:WPS Office (汇总)
- cad标注桩号lisp_cad桩号标注插件下载
- Matlab非线性拟合函数——nlinfit
- QC的七大手法和八大原则
- onlyoffice 在线编辑
- linux搭建ntp发包教程,linux 搭建本地ntp服务器
- mysqlError: Can't connect to MySQL server on 'localhost' (10061)
- OneZero第二周第二次站立会议(2016.3.29)
- C++判断一个大于2的整数是否是素数
- 手把手教你进行Pycharm活动模板配置
- 看纸箱设备厂家如何定义包装纸箱的
- eCharts——柱状图中的柱体颜色渐变
- win10主题更换_【小A问答】遇到超好看的Win10主题壁纸如何提取?
- 数据库SQLserver(课本)
- 暑假训练---三棱锥内切球公式及海伦公式