题目的意思很容易理解.就是找两个不同坐标的对应关系.下面的思路转自POJ的论坛

首先,记由1到2的方向记为2,1到3的方向记为3……1到7的方向记为7,他们分别是:(0,1),(-1,1),(-1,0),(0,-1),(1,-1),(1,0);这些规律不仅对于1的周围六个方向有效,对于所有的点都是有效的。然后记1所在为圈1,2..7为圈1,8..19为圈2……,所以,很容易可以得到第n圈有蜂窝6n个(n>0),对于这个等差数列求和,S[1..n]=3n^2+3n,包括第0圈的1,则S[0..n]=3n^2+3n+1。

读入数字x,解方程3n^2+3n+1=x,解出来n=[sqrt(12x-3)-3]/6 如果n为整数,则圈数p=n,否则p=trunc(n)+1,又可以通过公式t:=x-3*sqr(p)+3*p-1;求出t(x是第n圈的第t个)。

可以发现,从上一圈的最后一点,即(p-1,0)走到目的点,首先应在2方向上走1步,再沿(-1,1)走p-1步,其余的5个方向都走p步,此外每走一次,t就要减去相应的值,当t=0时,就可以退出循环,这样就可以很容易得到答案。

#include<stdio.h>
#include<math.h>
int main(){
double x;
int n,t,p,x0,y0,i;
while(scanf("%d",&n)!=EOF){
x=(sqrt(*n-)-)/;
p=(int)x;
if(*p*p+*p+!=n){
t=n-(*p*p+*p+);
p++;
x0=p-;
y0=;
while(t){
t--;
y0++;
for(i=;i<=p-&&t;i++,t--)x0--,y0++;
for(i=;i<=p&&t;i++,t--)x0--;
for(i=;i<=p&&t;i++,t--)y0--;
for(i=;i<=p&&t;i++,t--)x0++,y0--;
for(i=;i<=p&&t;i++,t--)x0++;
for(i=;i<=p&&t;i++,t--)y0++;
}
printf("%d %d\n",x0,y0);
}
else
printf("%d 0\n",p);
}
return ;
}

下面是另外一种解法,其实都差不多的!!!

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 50000
using namespace std;
struct dir
{
int x,y;
dir(){}
dir(int a,int b){
x=a;
y=b;
}
dir operator+(dir A){
return dir(A.x+x,A.y+y);
}
}an[],p;
int main(){
int i,j,n,k,x,y,m;
an[]=dir(-,);an[]=dir(-,);an[]=dir(,-);
an[]=dir(,-);an[]=dir(,);an[]=dir(,);
while(cin>>n){
k=((sqrt(12.0*n-3.0)-3.0)/6.0);
if(*k*(k+)+!=n) k++;
p.x=k;p.y=;
m=;
if(k>) m=*k-((*k*(k+)+)-n);
i=;
while(m){
for(j=;j<k;j++){
p=p+an[i];
m--;
if(m==)
break;
}
i++;
}
cout<<p.x<<' '<<p.y<<endl;
}
return ;
}

poj 2265 Bee Maja的更多相关文章

  1. POJ 2265 Bee Maja (找规律)

    题目链接 题意 : 给你两个蜂巢的编号,给你一个的编号让你输出在另外一个蜂巢中对应的编号. 思路 : 先将蜂巢分层,第一层一个数,第二层6个数,第三层12个数…………然后用公式表示出第n层的最后一个数 ...

  2. POJ 1870 Bee Breeding(找规律)

    题目链接 题意 : 给你一个蜂巢状图形,让你找出两个点之间的距离. 思路 : 在做这个题之前可以看一下2265,因为是一种题来着,规律就是我在2265里写的那样,然后就是求距离了,求距离的时候只需考虑 ...

  3. poj 1870 Bee Breeding

    思路:首先要建立坐标,具体作法见:http://www.cnblogs.com/xin-hua/p/3237096.html 然后将得到2坐标之差x,y:如果x,y同号,则相加,否则去最大.(要取绝对 ...

  4. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  5. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  6. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  7. ACM训练计划step 1 [非原创]

    (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...

  8. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  9. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

随机推荐

  1. iOS 拷贝、剪切和粘贴理论基础(转)

    简介 在iPhone OS 3.0之后,用户可以在一个应用程序上拷贝文本.图像.或其它数据,然后粘贴到当前或其它应用程序的不同位置上.比如,您可以从某个电子邮件中拷贝一个地址,然后粘贴到Contact ...

  2. XMPP登录应用

    一.导入框架 1.XMMP框架,写入头文件,设置XMPPStreamDelegate代理,定义 XMPPStream *_xmppStream; 2.libresolv.dylib 3.libxml2 ...

  3. (转)Single Instance Form in a MDI application

    private void OpenForm<T>() where T : Form, new() { T frm = (T)new List<Form>(this.MdiChi ...

  4. String 转Clob

    把String转Clob java.sql.Clob c = new javax.sql.rowset.serial.SerialClob("abc".toCharArray())

  5. C++记录2

    1, 求成员变量的偏移: 2, const实现机制:在编译期间完成,对于内置类型,如int, 编译器可能使用常数直接替换掉对此变量的引用.而对于结构体不一定. 编译器在优化代码时把j直接优化成64h了 ...

  6. 关于delete

    上面三图在debug下,delete的时候会以fe ee覆盖指针所指向要回收内存前后较大一块区域的值. 下图对于release下delete的时候会先用fe ee覆盖指针所指位置起6*4=24字节, ...

  7. DDL操作前后都有COMMIT

    引用出处: http://www.itpub.net/thread-1746448-1-1.html 要说明这个问题,首先需要说明什么是DDL语句.DDL语句是数据定义语句,包括各种数据对象的创建.修 ...

  8. ios水果风暴游戏源码下载

    游戏源码是从那个IOS教程网IOS.662p.com分享给大家的. 这是一款ios水果风暴游戏源码下载,介绍给大家一下,喜欢的朋友可以下载学习一下吧.应用介绍:这是一个以获得高分和挑战更高难度为目的的 ...

  9. SQL Server中批量替换数据

    SQL Server数据库中批量替换数据的方法 SQL Server数据库操作中,我们可能会根据某写需要去批量替换数据,那么如何批量修改替换数据呢?本文我们就介绍这一部分内容,接下来就让我们一起来了解 ...

  10. ACE_linux:任务 & 命令(Task and Command)

    1.涉及类 ACE_Task//ACE任务ACE_Activation_Queue//ACE命令队列 ACE_Method_Request//ACE请求(命令) 2.简介 ACE主动对象模式 主动对象 ...