标题:螺旋折线

如图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

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

看了很多题解,虽然都是找规律但都比较复杂,终于找到了一篇有比较简单易算规律的题解

代码只有十行   但是不容易想到(可能只是我)  

参考自  https://blog.csdn.net/qq799028706/article/details/84312062

思路 :把每一层左下的边旋转90°就能得到该层的正方形,第n层的正方形边长为 n*2*4=8*n  ;

要求找点[x,y] ,那么就先找到[x,y]所在的层数 n = max(fabs[x],fabs[y]);

把 1至n-1层正方形的边长之和相加 再加上[x,y]到[-n,-n]需要的边长即可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
LL x, y;
cin >> x >> y;
LL n = max(fabs(x), fabs(y)) ; // 判断在第几层的正方形
LL sum = ( + ( * (n - ))) * (n - ) / ; // 前n-1层四边之和 等差数列求和
if(x < y){
sum += * n + x + y; // 正着数
}else{
sum += n * - * n - x - y; // 倒着数
}
cout << sum << endl;
}

螺旋折线(可能是最简单的找规律)【蓝桥杯2018 C/C++ B组】的更多相关文章

  1. ZOJ2185 简单分块 找规律

    初步找大概位置,然后找精确位置,算是简单化的分块吧! #include<cstdio> #include<cstdlib> #include<iostream> u ...

  2. [蓝桥杯2018初赛]小朋友崇拜圈(dfs找环)

    传送门 思路: 题意大意:n条有向边,找出最大环. 我们发现,如果一个小朋友没有被任何人崇拜,那么他一定不位于环中.为此我们可以设置一个indug数组预处理.如果2被崇拜了那么indug[2]就加加, ...

  3. 找规律 ZOJ3498 Javabeans

    Javabeans are delicious. Javaman likes to eat javabeans very much. Javaman has n boxes of javabeans. ...

  4. codeforces 362A找规律

    刚开始以为是搜索白忙活了原来是个简单的找规律,以后要多想啊 此题是两马同时跳 A. Two Semiknights Meet time limit per test 1 second memory l ...

  5. 51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)

    题目: 这题很简单,找规律即可. 考虑两次进位: 1.a*b时的进位. 2.aa*b时加法时进位. 代码: #include <bits\stdc++.h> using namespace ...

  6. 2017ACM暑期多校联合训练 - Team 1 1011 HDU 6043 KazaQ's Socks (找规律)

    题目链接 Problem Description KazaQ wears socks everyday. At the beginning, he has n pairs of socks numbe ...

  7. 螺旋折线——第九届蓝桥杯C语言B组(省赛)第七题

    原创 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, ...

  8. 螺旋折线|2018年蓝桥杯B组题解析第七题-fishers

    标题:螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...

  9. 螺旋折线-C++

    标题:螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...

随机推荐

  1. IIS 8.0 Using ASP.NET 3.5 and ASP.NET 4.5微软官方安装指导

    from:https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45 S ...

  2. sql 一列拼接成一行,再分割成列

    原始数据,需要拼接成一行 select * from (select d.*,(SELECT count ([Keyword])FROM [DragonGuoShi].[dbo].[ArticleIn ...

  3. c++ string split

    #include <iterator> #include <regex> std::vector<std::string> s_split(const std::s ...

  4. datatable的点击事件

    datatable的点击事件 在项目中遇到一个问题,在动态绑定到datatables上的数组,要是用table中的两个某一行中数据作为参数,通过鼠标点击进行获取,查阅官方文档得以解决: //首先定义一 ...

  5. mysql避免脏读

    mysql避免脏读   在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读) 在SELECT 的读取锁定主要分为两种方式 ...

  6. fzu2204 dp

    2015-10-06 19:31:05 n个有标号的球围成一个圈.每个球有两种颜色可以选择黑或白染色.问有多少种方案使得没有出现连续白球7个或连续黑球7个. 每组包含n,表示球的个数.(1 <= ...

  7. jQuery事件--mouseover()、mouseout()、mouseenter()和mouseleave()

       mouseover([[data],fn]) 概述 当鼠标指针位于元素上方时,会发生 mouseover 事件.该事件大多数时候会与 mouseout 事件一起使用 注释:与 mouseente ...

  8. linux 安装 Python

    一. 打开终端,输入:wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tgz 下载完毕后 输入解压命令:tar –zxvf Py ...

  9. 【Hive学习之七】Hive 运行方式&权限管理

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...

  10. 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址

    一.创建WCF服务器 1.创建WCF服务器的窗体应用程序 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→Windows→Windows窗体应用程序 ...