蓝桥杯刷题|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突刺原因和解决办法
2129 1
大模型训练loss突刺原因和解决办法
|
8月前
|
机器学习/深度学习 人工智能 数据可视化
AI开源框架:让分布式系统调试不再"黑盒"
Ray是一个开源分布式计算框架,专为支持可扩展的人工智能(AI)和Python应用程序而设计。它通过提供简单直观的API简化分布式计算,使得开发者能够高效编写并行和分布式应用程序 。Ray广泛应用于深度学习训练、大规模推理服务、强化学习以及AI数据处理等场景,并构建了丰富而成熟的技术生态。
1560 102
AI开源框架:让分布式系统调试不再"黑盒"
|
2月前
|
人工智能 算法 开发者
一个提示词模板,搞定抖音短视频脚本创作
专为技术人打造的抖音脚本提示词模板,结构化拆解短视频创作套路,结合DeepSeek、通义千问等AI工具,快速生成可执行脚本框架,助力技术分享、产品演示高效落地,30秒讲清重点,开头抓人、节奏紧凑、完播率提升。
1444 12
|
设计模式 小程序 前端开发
通义灵码一周年:通义灵码,一款适合零基础初学者的编码搭子
本文介绍了作者作为前端开发工程师,通过体验通义灵码的@workspace和@terminal功能,从零基础初学者的角度出发,逐步掌握编程的过程。文章详细描述了安装通义灵码的方法、如何通过提问学习项目结构和功能、以及如何使用@terminal执行和启动项目。最终,作者表示通过这些工具,他已经顺利入门编程,并将继续探索更多功能。
709 1
通义灵码一周年:通义灵码,一款适合零基础初学者的编码搭子
|
Java Spring
spring boot构建Stomp客户端
配置包括三部分,一个是基本的websocket客户端配置,另一个是Stomp客户端配置和会话处理
548 0
|
NoSQL Redis
redis 的 key 过期策略是怎么实现的(经典面试题)超级通俗易懂的解释!
本文解释了Redis实现key过期策略的方式,包括定期删除和惰性删除两种机制,并提到了Redis的内存淘汰策略作为补充,以确保过期的key能够被及时删除。
289 1
|
关系型数据库 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) 已解决
|
机器学习/深度学习 算法 C语言
【深度学习】优化算法:从梯度下降到Adam
【深度学习】优化算法:从梯度下降到Adam
555 1
|
测试技术 uml 数据安全/隐私保护
强大的跨平台绘制流程图软件网站ProcessOn
强大的跨平台绘制流程图软件网站ProcessOn
380 0