uvaoj10161
2016-03-05 18:03
387 查看
uvaoj10161
这类题就是找规律,数学类的题,不适合浪费空间,而是找规律,找计算的公式。
本题提看到图就知道它是怎么走的,相当于一环一环的走(四分之一环),重要的是找到对角线特点,同坐对角线的坐标比较好找 该找的位置。(注意它给你坐标方向的特点 行是从上到下 变小,列从左到右变大)
#include<stdio.h>
#include<math.h>
int main()
{
int ans;
int row;
int x,y,res;
while(scanf("%d",&ans))
{
if(ans==0)break;
row = sqrt(ans);
if( row*row < ans )
row ++;
x = row;
y = row;
res = row*row - row+1;
if(row%2==0)
{
while(ans > res)
{y--;res++;}
while(ans < res)
{x--;res--;}
}
else
{
while(ans > res )
{x--;res++;}
while( ans< res)
{y--;res--;}
}
printf("%d %d\n",x,y);
}
return 0;
}
这类题就是找规律,数学类的题,不适合浪费空间,而是找规律,找计算的公式。
本题提看到图就知道它是怎么走的,相当于一环一环的走(四分之一环),重要的是找到对角线特点,同坐对角线的坐标比较好找 该找的位置。(注意它给你坐标方向的特点 行是从上到下 变小,列从左到右变大)
#include<stdio.h>
#include<math.h>
int main()
{
int ans;
int row;
int x,y,res;
while(scanf("%d",&ans))
{
if(ans==0)break;
row = sqrt(ans);
if( row*row < ans )
row ++;
x = row;
y = row;
res = row*row - row+1;
if(row%2==0)
{
while(ans > res)
{y--;res++;}
while(ans < res)
{x--;res--;}
}
else
{
while(ans > res )
{x--;res++;}
while( ans< res)
{y--;res--;}
}
printf("%d %d\n",x,y);
}
return 0;
}
相关文章推荐
- Druid 配置详解
- Jtable单元格合并的问题
- Permission denied user=hadoop access=WRITE inode=root rootsupergroup rwxr
- 深入了解 CSS3 新特性
- Mysql limit 分页机制和优化实例
- 进程的终止
- MACOS远程访问树莓派桌面
- 判断一个大于1的数是不是一个素数
- 为什么是link-visited-hover-active
- XAudio2学习七之工程迁移错误
- 上机题目(初级)- 下雪球(Java)
- 2016年新年愿望
- 意图与逻辑
- 学习笔记(四)
- 子线程是否要手动创建autoreleasepool
- Linux内核页表
- linux及安全第二周总结——20135227黄晓妍
- 顶尖中文大学计算机专业课程体系
- POJ 3728:The merchant LCA
- 容器类和非容器类,线程安全和非线程安全,nonatomic和atomic