蓝桥杯刷题|04普及-真题

[蓝桥杯 2018 省 B] 螺旋折线

题目描述

如图所示的螺旋折线经过平面上所有整点恰好一次。

对于整点 (X,Y),我们定义它到原点的距离 dis(X,Y) 是从原点到(X,Y) 的螺旋折线段的长度。

例如 dis(0,1)=3,dis(−2,−1)=9。

给出整点坐标 (X,Y),你能计算出 dis(X,Y) 吗?

输入格式

X 和 Y。

输出格式

输出dis(X,Y)

输入输出样例

输入 #1  0 1

输出 #1  3

说明/提示

对于 40%的数据,−−1000≤X,Y≤1000。

对于 70% 的数据,−10^{5}≤X,Y≤10^{5}

对于 100% 的数据,−10^{9}≤X,Y≤10^{9}

思路

对于这个题,我把图中所有的点都列了出来然后发现规律

(0,0)        0

对于绝对值最大是1的

(-1,0)       1 

(-1,1)       2

(0,1)        3

(1,1)        4

(1,0)        5

(1,-1)       6

(0,-1)       7

(-1,-1)      8

对于绝对值最大是2的

(-2,-1)        9

(-2,0)        10

(-2,1)        11

(-2,2)        12

        

  (-1,2)        13

  (0,2)        14

  (1,2)        15

  (2,2)        16

(2,1)        17

(2,0)        18

(2,-1)        19

(2,-2)        20

(1,-2)        21

(0,-2)        22

(-1,-2)        23

(-2,-2)        24

对于绝对值最大是3的

(-3,-2)        25 

(-3,-1)        26

(-3,0)        27

(-3,1)        28

(-3,2)        29

(-3,3)        30

(-3,3)        31        

(-2,3)        32

(-1,3)        33

(0,3)        34

(1,3)        35

(2,3)        36

        

(3,2)           37

(3,1)           38

(3,0)            39

(3,-1)           40

(3,-2)           41

(3,-3)          42

        

(2,-3)          43

(1,-3)          44

(0,-3)        45

(-1,-3)        46

(-2,-3)        47

(-3,-3)        48

假设最大的绝对值为n,可以发现每一种距离的范围都是(2n-1)^{2}(2n+1)^{2}(不包括(2n+1)^{2})因此可以根据n来缩小计算的范围

代码1

#include<iostream>
#include<cmath>//包含求绝对的函数 
using namespace std;
int main()
{
	long long int x,y,num=0,a;
	cin>>x>>y;
	long long int n=(abs(x)>abs(y))?abs(x):abs(y);
	long long int X=(-1)*n,Y=(-1)*(n-1);//第一个坐标
	for(long long int i=(2*n-1)*(2*n-1)+1;i<(2*n+1)*(2*n+1);i++)
	{
		if(X == ( - 1 ) * n && Y > (-1)*n && Y < n ) Y ++;
		
		else if ( X < n && X >= ( - 1 ) * n && Y == n)X++;
		
		else if(X == n && Y <= n && Y > ( - 1 ) * n)Y--;
		
		else if(X < n && X > ( - 1 ) * n && Y == ( - 1 ) * n) X--;
		else;
		
		if(Y==y&&X==x)
		{
			num=i;
			break;
		}	
	} 
	cout<<num<<endl;
	
	
	return 0;
}

这样对于大的数字就会超时,只能得84分

后面我又根据横坐标和做坐标相同,可以将每个分为4部分,每次找到这一部分的第一个在开始遍历,就又缩小计算的范围,缩短时间。

代码2

#include<iostream>
#include<cmath>//包含求绝对的函数 
using namespace std;
int main()
{
	long long int x,y,num=0,a;
	
	cin>>x>>y;
	long long int n=(abs(x)>abs(y))?abs(x):abs(y);
	long long int X=0,Y=0;

	if(x==(-1)*n){a=0;X=(-1)*n,Y=(-1)*(n-1);}
	if(y==n){a=1;Y=n,X=(-1)*(n-1);}
	if(x==n){a=2;X=n,Y=n-1;}
	if(y==(-1)*n){a=3;X=n-1,Y=(-1)*n;}
	//a代表第几部分
	long long int b=(2*n-1)*(2*n-1)+a*2*n;
	
	for(long long int i=b;i<b+2*n;i++)
	{
		if(Y==y&&X==x)
		{
			num=i;
			break;
		}
		
		if(X == ( - 1 ) * n && Y > (-1)*n && Y < n ) Y++;
		
		else if ( X < n && X >= ( - 1 ) * n && Y == n)X++;
		
		else if(X == n && Y <= n && Y > ( - 1 ) * n)Y--;
		
		else if(X <= n && X > ( - 1 ) * n && Y == ( - 1 ) * n) X--;
		else;
		
	
	} 
	cout<<num<<endl;
	
	
	return 0;
} 

最后吧这个放在一起方便观察

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/470571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7.9 常用环境配置

文章目录 环境准备安装docker安装Java安装maven安装git安装MYSQL安装Redis安装RabbitMq安装minio 环境准备 操作系统版本为centos 7.9&#xff0c;内核版本需要在3.10以上 sudo uname -rsudo cat /etc/redhat-release1.确认环境好后&#xff0c;安装工具包并设置仓库 sudo yum…

Android14音频进阶:AudioFlinger究竟如何混音?(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程

原文链接&#xff1a;最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598050&idx5&sn70fd3f5946d581ad9c1363295b130ef5&chksmfa823e05cdf5b713baf9cf1381bfb2455ad675a0b21e194bef8b76f35d6aa77…

轻巧的elasticsearch可视化工具

一、概述 常见的ES可视化工具有&#xff1a; kibanaelasticsearch-headElasticHDDejavucerebroelasticview 一、安装elasticview 在众多ES可视化龚居中&#xff0c;elasticview是一款比较轻量简洁&#xff0c;兼容性较好&#xff0c;可以兼容多个ES版本&#xff0c;不但可以进…

PySpark案例实战

一、前言介绍 二、基础准备 # 导包 from pyspark import SparkConf,SparkContext #创建SparkConf类对象 confSparkConf().setMaster("local[*]").setAppName("test_spark_app") #基于SparkXConf类对象创建SparkContext对象 scSparkContext(confconf) #打印…

PCL 极大似然估计法拟合平面

目录 一、算法原理1、极大似然估计2、拟合过程3、参考文献二、代码实现三、结果展示一、算法原理 1、极大似然估计 在以最小二乘法为基础的估计算法中, 所有的参数都是确定值;而实际上,测量数据与未知参数都具有一定的随机性。这就导致了最小二乘法估计质量的缺陷以及对白噪…

整型数组按个位值排序 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个非空数组(列表)&#xff0c;其元素数据类型为整型&#xff0c;请按照数组元素十进制最低位从小到大进行排序&#xff0c;十进制最低位相同的元素&#xf…

机器学习——编程实现从零构造训练集的决策树

自己搭建一棵决策树【长文预警】 忙了一个周末就写到了“构建决策树”这一步&#xff0c;还没有考虑划分测试集、验证集、“缺失值、连续值”&#xff0c;预剪枝、后剪枝的部分&#xff0c;后面再补吧&#xff08;挖坑&#xff09; 第二节内容&#xff1a;验证集划分\k折交叉…

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支&#xff0c;专注于向量、向量空间&#xff08;也称为线性空间&#xff09;、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…

期权波动率是什么?怎么计算?

期权波动率 历史波动率&#xff1a;基于历史行情计算出来的历史波动率 我们现在站在现实时点B回顾过去&#xff0c;从A到B这段时间的历史行情我们是知道的&#xff0c;但是基于过去一段时间&#xff0c;标的价格的历史数据计算出来的波动率&#xff0c;就是历史波动率&#x…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门&#xff1a; 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 一、简单介绍 二、简单卡通漫画风格效果实现原理 A、边缘蒙版的处理说明&#xff1…

FPGA控制AD7606_AD7606解读

目录 一、AD7606解读二、引脚说明三、时序图 一、AD7606解读 AD7606特点&#xff1a; 8通道同步采样模拟通道数为8分辨率&#xff1a;16bit&#xff0c;即最小采样的电压为5V/(2^16) 0,00007V&#xff0c;即数字量的1就代表模拟量的0,00007V&#xff0c;2代表0,00014V有效位数…

鸿蒙开发实战:【系统服务管理部件】

简介 samgr组件是OpenHarmony的核心组件&#xff0c;提供OpenHarmony系统服务启动、注册、查询等功能。 系统架构 图 1 系统服务管理系统架构图 目录 /foundation/systemabilitymgr ├── samgr │ ├── bundle.json # 部件描述及编译文件 │ ├── frameworks …

linux之centos7vmware虚拟机的安装

目录 一、下载合适的vmware和操作系统镜像安装文件 来自引用文章的软件下载本片文章使用的软件下载 二、根据教程进行安装 三、网络配置解说 四、配置网络 编辑虚拟机网络 对VMWARE虚拟机网络进行配置 设置虚拟机网络为NAT模式 设置自定义网络为 VMnet8(NAT模式) 编辑li…

[ C++ ] STL---list的使用指南

目录 list简介 list的常用接口 构造函数 赋值运算符重载 迭代器 容量相关接口 元素访问接口 修改相关接口 头插push_front() 头删pop_front() 尾插push_back() 尾删pop_back() insert() erase() list的迭代器失效 list简介 1. list是可以以O(1)的时间复杂度在任意…

机器人现有力控技术检索

文章目录 力控技术1 基本柔顺力控1.1 直接力控1.2 间接力控1.2.1 被动和主动柔顺控制1.2.2 混合力位控制1.2.3 阻抗&导纳力控1.2.3.1 原理1.2.3.2 区别和联系1.2.3.3 工程应用 1.2.4 阻抗力控1.2.5 导纳力控 2 先进力控2.1 自适应力控2.2 鲁棒力控2.3 学习力控 3 智能力控3…

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI&#xff08;串行同步接口&#xff09;是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列&#xff0c;初始化传感器的门限输出。 传感器不断更新位置数据&#xff0c;并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…
最新文章