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

简介: 蓝桥杯刷题|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% 的数据,− ≤X,Y≤ 。

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

思路

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

(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,可以发现每一种距离的范围都是 到 (不包括 )因此可以根据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;
}

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

相关文章
|
机器学习/深度学习
大模型训练loss突刺原因和解决办法
【1月更文挑战第19天】大模型训练loss突刺原因和解决办法
2901 1
大模型训练loss突刺原因和解决办法
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
2104 1
|
Java 应用服务中间件 开发工具
苍穹外卖》电商实战项目(java)知识点整理(上)
苍穹外卖》电商实战项目(java)知识点整理(上)
1339 3
|
网络协议 关系型数据库 MySQL
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
|
机器学习/深度学习 数据采集 PyTorch
图像分类保姆级教程-深度学习入门教程(附全部代码)
图像分类保姆级教程-深度学习入门教程(附全部代码)
|
人工智能 算法 开发者
一个提示词模板,搞定抖音短视频脚本创作
专为技术人打造的抖音脚本提示词模板,结构化拆解短视频创作套路,结合DeepSeek、通义千问等AI工具,快速生成可执行脚本框架,助力技术分享、产品演示高效落地,30秒讲清重点,开头抓人、节奏紧凑、完播率提升。
7826 13
|
设计模式 小程序 前端开发
通义灵码一周年:通义灵码,一款适合零基础初学者的编码搭子
本文介绍了作者作为前端开发工程师,通过体验通义灵码的@workspace和@terminal功能,从零基础初学者的角度出发,逐步掌握编程的过程。文章详细描述了安装通义灵码的方法、如何通过提问学习项目结构和功能、以及如何使用@terminal执行和启动项目。最终,作者表示通过这些工具,他已经顺利入门编程,并将继续探索更多功能。
1353 1
通义灵码一周年:通义灵码,一款适合零基础初学者的编码搭子
|
Java Spring
spring boot构建Stomp客户端
配置包括三部分,一个是基本的websocket客户端配置,另一个是Stomp客户端配置和会话处理
1153 0
|
关系型数据库 MySQL Linux
Docker安装mysql详细教程, mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘(报错已解决)
Docker安装mysql详细教程, mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory) 已解决
|
人工智能 数据挖掘 Python
Python pandas中read_csv函数的io参数
Python pandas中read_csv函数的io参数
634 5

热门文章

最新文章