原创


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

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。 
注意: 
main函数需要返回0; 
只使用ANSI C/ANSI C++ 标准; 
不要调用依赖于编译环境或操作系统的特殊函数。 
所有依赖的函数必须明确地在源文件中 #include 
不能通过工程设置而省略常用头文件。 
提交程序时,注意选择所期望的语言类型和编译器类型。

我的解题思路很简单很直白,由于行驶轨迹已经固定,所以只要从原点开始沿着轨迹边走边判断即可。

分为左/上/右/下四个方向按顺序(行驶轨迹固定)行走,可以看到先向左1步、上1步、右2步、下2步;

然后左3步(+2)、上3步(+2)、右4步(+2)、下4步(+2);以后都是每次+2;我们每走一步就判

断是否到终点。(代码不够简练,如有错误,很欢迎指正)

 #include<stdio.h>
#include<math.h> int xx[]={-,,,}; //左上右下
int yy[]={,,,-}; int count; //计数器 int left=; //4个方向初值
int up=;
int right=;
int down=; int main()
{
long long x,y;
scanf("%I64d%I64d",&x,&y); int dx=;
int dy=;
int c=;
int flag=; //标志 if( dx==x && dy==y )
{
printf("");
return ;
}
else
{
int i;
for(i=;i<=;i++)
{
c=;
if(i==) //左
{
while(c<left)
{
dx+=xx[i];
dy+=yy[i];
count+=fabs(xx[i])+fabs(yy[i]); //加步数
if(dx==x && dy==y) //走了以后判断
{
flag=;
break;
}
c++;
}
if(flag==)
break;
left+=; //步数+2
}
if(i==) //上
{
while(c<up)
{
dx+=xx[i];
dy+=yy[i];
count+=fabs(xx[i])+fabs(yy[i]);
if(dx==x && dy==y)
{
flag=;
break;
}
c++;
}
if(flag==)
break;
up+=;
}
if(i==) //右
{
while(c<right)
{
dx+=xx[i];
dy+=yy[i];
count+=fabs(xx[i])+fabs(yy[i]);
if(dx==x && dy==y)
{
flag=;
break;
}
c++;
}
if(flag==)
break;
right+=;
}
if(i==) //下
{
while(c<down)
{
dx+=xx[i];
dy+=yy[i];
count+=fabs(xx[i])+fabs(yy[i]);
if(dx==x && dy==y)
{
flag=;
break;
}
c++;
}
if(flag==)
break;
down+=;
}
if(i==) //再次相加
i=-;
}
}
printf("%d",count);
return ;
}

09:49:11

2018-04-10

螺旋折线——第九届蓝桥杯C语言B组(省赛)第七题的更多相关文章

  1. 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题

    原创 标题:递增三元组 给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, ...

  2. 乘积尾零——第九届蓝桥杯C语言B组(省赛)第三题

    原创 标题:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7 ...

  3. 第几天——第九届蓝桥杯C语言B组(省赛)第一题

    原创 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 这题是送分题,只需要注意一下2000年 ...

  4. 明码——第九届蓝桥杯C语言B组(省赛)第二题

    原创 标题:明码 汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛.16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字 ...

  5. 激光样式——第九届蓝桥杯C语言B组(国赛)第二题

    原创 标题:激光样式x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下, ...

  6. 换零钞——第九届蓝桥杯C语言B组(国赛)第一题

    原创 标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种.小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱.小明有点强迫症,他坚持要求200元 ...

  7. 第九届蓝桥杯C/C++B组省赛感想

    因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...

  8. 2018年第九届蓝桥杯C/C++A组省赛(最后一题)

    第十题 付账问题   [题目描述]    几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执.    现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸 ...

  9. 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)

    题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...

随机推荐

  1. Linux下sz下载文件超过4G办法

    当下载文件超过4G时,sz提示能下载. 解决办法有以下几种: 1.scp 2.ftp 3.nc 4.icmp 5.文件切割 ---------------------------------- 以上4 ...

  2. IDA Pro 权威指南学习笔记(十一) - 名称与命名

    多数情况下,要修改一个名称,只需单击想要修改的名称(使其突出显示),并使用快捷键 N 打开更名对话框 右击需要修改的名称,并在出现的上下文菜单中选择 Rename 选项,也可以更改名称 参数和局部变量 ...

  3. win iso download

    http://rufus.akeo.ie/ window iso download http://win.86tyu.cn/ylmf32win7.html

  4. 8.Redis 数据备份与恢复

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下 ...

  5. e8000051

    Unable to install package (e8000051). Please check used certificate validity and provisioning.. Unab ...

  6. 跟着太白老师学python day11 函数名的应用 globals(), locals()

    1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...

  7. JAVA_01

    Java局部变量 局部变量声明在方法.构造方法或者语句块中: 局部变量在方法.构造方法.或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁: 访问修饰符不能用于局部变量: 局部变量只在声明它 ...

  8. Dbvisualizer设置SQL语句自动提示

    Dbvisualizer默认不自动提示SQL语句的命令及查询的表,虽然可以通过Ctrl+/快捷键进行手动调用出提示信息,用习惯了PLSQL Developer难免有些不适应. 设置自动提示方法: 点击 ...

  9. Spyder kernel died 错误

    Keras 2.2.4版本和 tensorflow1.2.1 版本不兼容导致的错误.降低Keras 为2.1.2版本 import keras 出现: Using TensorFlow backend ...

  10. fdsf

    https://blog.csdn.net/chen_2890/article/details/83757022Elasticsearch环境搭建和介绍(Windows) https://blog.c ...