1740蜂巢迷宫

题目


有一个无限大的蜂巢迷宫,为了方便表示每一个六边形格子,现在把座标引入到这个迷宫中,如上图年示。

艾瑞特在这个迷宫中街,刚开始他在(0,0)的位置,按照下图所示的路线在这个迷宫中行走。

走了n步以后,他想知道自己在哪个位置了

输入

单组测试数据。
一个整数n (0≤n≤10^18),表示艾瑞特移动的步数。

输出

输出两个整数x和y,表示艾瑞所在的座标。

思路

首先确定好层数
由于每一层的砖块数分别为6,12,18,24…递增
所有可以依照此规律来计算出层数
然后确定其具体位置
六边形有六个方向
其六个边角延伸的坐标其实就是直线函数换算就可以了
不在边角上的块就要根据其所在具体位置分六种情况讨论

代码

#include<iostream>
#include<string>
using namespace std;
int main(){
long long x,r=0;
cin>>x;
if(x==0)cout<<"0 0"<<endl;
else{
long long i=0;
long long layer=0;
long long o1=0, o2=0;
while(x>r){layer++;i++;r+=6*i;
}long long step=x-r+6*i;long long side=step/layer;long long pos=step%layer;switch(side){
case 0:o1=layer*2;o2=0;if(pos!=0){for(int j=0;j<pos;j++){o1--;o2+=2;}}break;
case 1:o1=layer;o2=2*layer;if(pos!=0){o1=layer;o2=2*layer;for(int j=0;j<pos;j++){o1-=2;}}break;
case 2:o1=layer*(-1);o2=2*layer;if(pos!=0){for(int j=0;j<pos;j++){o1--;o2-=2;}}break;
case 3:o1=layer*(-2);o2=0;if(pos!=0){for(int j=0;j<pos;j++){o1++;o2-=2;}}break;
case 4:o1=layer*(-1);o2=(-2)*layer;if(pos!=0){for(int j=0;j<pos;j++){o1+=2;}}break;
case 5:o1=layer;o2=(-2)*layer;if(pos!=0){for(int j=0;j<pos;j++){o1++;o2+=2;}}break;
case 6:o1=layer*2;o2=0;}cout<<o1<<" "<<o2<<endl;}
}

51nod 1740蜂巢迷宫相关推荐

  1. 1740 蜂巢迷宫(模拟,暴力,剪枝)

    有一个无限大的蜂巢迷宫,为了方便表示每一个六边形格子,现在把座标引入到这个迷宫中,如上图年示. 艾瑞特在这个迷宫中街,刚开始他在(0,0)的位置,按照下图所示的路线在这个迷宫中行走. 走了n步以后,他 ...

  2. 蜂巢迷宫 c语言,最强大脑的蜂巢迷宫 创意源于此

    背景 人们为了更好的描述一个东西,有一种将大化小的思路,比如时钟被分为了12个区域,每个区域表示一个小时,然后每个小的区域又被划分为更小的区域表示分钟. 在GIS系统中,也有类似的思想,比如将地图划分 ...

  3. 51Nod1740 蜂巢迷宫

    题目 有一个无限大的蜂巢迷宫,为了方便表示每一个六边形格子,现在把座标引入到这个迷宫中,如上图年示. 艾瑞特在这个迷宫中街,刚开始他在(0,0)的位置,按照下图所示的路线在这个迷宫中行走. 走了n步以 ...

  4. android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码...

    Android精选源码 Android 炫酷的多重水波纹源码 Android开发一款基于行为识别和个性化推荐的智能推荐APP 仿IT之家Android源码 android判断App位于前台或者后台源码 ...

  5. android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码

    Android精选源码 Android 炫酷的多重水波纹源码 Android开发一款基于行为识别和个性化推荐的智能推荐APP 仿IT之家Android源码 android判断App位于前台或者后台源码 ...

  6. *【51nod - 1459】迷宫游戏(记录双向权值的Dijkstra单源最短路)

    题干: 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间.游 ...

  7. 蜂巢的艺术与技术价值 - PostgreSQL PostGIS's hex-grid

    标签 PostgreSQL , vector grid , polygon grid , square grid , Hexagon grid , 矢量网格 , 几何网格 , 线段网格 , 多边形网格 ...

  8. BCI competition IV 2b简介

    BCI competition IV Data Set 2b BCI competition IV 公共数据集 Data sets 2b,是基于视觉诱发的左右手运动想象的脑电数据集.该数据集采集了9名 ...

  9. 什么是EEG以及如何解释EEG?

    当你思考.做梦.看东西和感觉的时候,你的大脑是持续活跃的,吸收所有的信息,压缩和重新连接现有的数据,并将所有的东西整合成一致的体验.对你来说,这种经历构成了你的现实. 你的大脑是活的.你的大脑会塑造你 ...

最新文章

  1. PC Lint 初学
  2. 解决新浪微博API调用限制 突破rate_limit_status瓶颈
  3. Redis:12---有序集合对象
  4. 密码编码学之AES及其工作模式详解
  5. code第一部分:数组
  6. Matlab--三维散点插值成曲面
  7. java 海量文件存储_【直通BAT】海量数据面试总结
  8. Linux安装JDK完整步骤
  9. i计算机网络的应用程序,计算机网络技术及其在校园网的研究与应用毕业论文.doc...
  10. C 入门 第五节 多维数组 字符串数组
  11. ipad文献管理软件_使用ipad看文献,有哪些好用的工具软件?
  12. 背景图片定位background-position用photoshopcs4标尺工具
  13. 使用LibreOffice将office文档转pdf(java实现)
  14. 链家爬取深圳租房代码(java)
  15. 【Unity3D脚本】Transform类
  16. 禁止查看网络计算机方法,Win10系统如何禁止某个软件联网?Win10阻止某个程序联网的方法...
  17. 邮箱 POP3服务器(端口110) SMTP服务器(端口25)
  18. 史上最全开启windows7(win7)虚拟wifi教程(上)
  19. RK3588平台开发系列讲解(USB篇)UAC初识
  20. 在/tmp 目录创建临时文件

热门文章

  1. momentjs 常用总结
  2. DisGeNET的初步认识
  3. uniapp上传华为应用市场,您的应用提示获取手机存储敏感权限,用户不同意时强制退出应用
  4. Mac电脑鼠标滚轮方向相反的解决办法
  5. Kingdee 云星空 7.7 自定义BOM成本查询 替代料用量取0 金额取0
  6. html音乐跳动的线,利用CSS3制作跳动音乐频谱跳动效果
  7. 2022年计算机二级考试WPS Office高级应用与设计考前冲刺题及答案
  8. 电视盒子系统是安卓还是yunOS,三招快速弄清
  9. android音乐播放器实验报告总结,音乐播放器设计实验报告.docx
  10. Windows下vscode实现pretty-print