• Java实现第九届蓝桥杯螺旋折线


    螺旋折线

    题目描述
    如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次。
    对于整点(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

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    不要使用package语句。不要使用jdk1.7及以上版本的特性。
    主类的名字必须是:Main,否则按无效代码处理。
    在这里插入图片描述

    import java.util.Scanner;
    
    public class Main {
        static int x, y;
        static int df = 0;
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            x = in.nextInt();
            y = in.nextInt();
    
            if (x > 0 && y >= 0) {
                int dx = Math.max(x, y);
                int dy = dx;
                df = (dx + dy) * (dx + dy);
                if (x < dx) {
                    df -= (dx - x);
                }
                if (y < dy) {
                    df += (dy - y);
                }
            } else if (x >= 0 && y < 0) {
                int dx = Math.max(Math.abs(x), Math.abs(y));
                int dy = -dx;
                df = (dx + Math.abs(dy)) * (dx + Math.abs(dy) + 1);
                if (x < dx) {
                    df += (dx - x);
                }
                if (y > dy) {
                    df -= (y - dy);
                }
            } else if (x < 0 && y <= 0) {
                int dx = -Math.max(Math.abs(x), Math.abs(y));
                int dy = dx + 1;
                df = (Math.abs(dx) + Math.abs(dy)) * (Math.abs(dx) + Math.abs(dy));
                if (x > dx) {
                    df -= (x - dx);
                }
                if (y > dy) {
                    df += (y - dy);
                }
            } else  if (x <= 0 && y > 0) {
                int dx = -Math.max(Math.abs(x), Math.abs(y));
                int dy = -dx;
                df = (Math.abs(dx) + Math.abs(dy)) * (Math.abs(dx) + Math.abs(dy) - 1);
                if (x > dx) {
                    df += (x - dx);
                }
                if (y < dy) {
                    df -= (y - dy);
                }
            }
            System.out.println(df);
        }
    }
    
  • 相关阅读:
    Solr Admin管理界面使用说明
    游戏设计手札07
    php中新浪微博的调用
    关于MFC中EDIT编辑框内容换行显示
    几个常用命令
    ANF
    关于MFC中的定时器用法
    C++ 堆方面的笔记
    关于类定义与IO操作
    mysql用户权限配置时遇到的问题
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077555.html
Copyright © 2020-2023  润新知