hdoj 1030 Delta-wave 【基础】
2015-11-23 20:39
148 查看
Total Submission(s): 6976 Accepted Submission(s): 2694
[align=left]Problem Description[/align]
A triangle field is numbered with successive integers in the way shown on the picture below.
The traveller needs to go from the cell with number M to the cell with number N. The traveller is able to enter the cell through cell edges only, he can not travel from cell to cell through vertices. The number of edges the traveller passes makes the length
of the traveller's route.
Write the program to determine the length of the shortest route connecting cells with numbers N and M.
[align=left]Input[/align]
Input contains two integer numbers M and N in the range from 1 to 1000000000 separated with space(s).
[align=left]Output[/align]
Output should contain the length of the shortest route.
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
[/code]
Delta-wave
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6976 Accepted Submission(s): 2694
[align=left]Problem Description[/align]
A triangle field is numbered with successive integers in the way shown on the picture below.
The traveller needs to go from the cell with number M to the cell with number N. The traveller is able to enter the cell through cell edges only, he can not travel from cell to cell through vertices. The number of edges the traveller passes makes the length
of the traveller's route.
Write the program to determine the length of the shortest route connecting cells with numbers N and M.
[align=left]Input[/align]
Input contains two integer numbers M and N in the range from 1 to 1000000000 separated with space(s).
[align=left]Output[/align]
Output should contain the length of the shortest route.
[align=left]Sample Input[/align]
6 12
[align=left]Sample Output[/align]
3分析:基础题,自己分析,不好解释。代码:[code]#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; void find(int n,int &l,int &r,int &val) { val=1; int i; for( i=1;;i+=2) { if(n-i<=0) { l=(n+1)/2; r=(i-n)/2+1; break; } val++; n-=i; } } int main() { int n,m; int a1,b1,a2,b2,val1,val2; while(scanf("%d%d",&n,&m)!=EOF) { find(n,a1,b1,val1); find(m,a2,b2,val2); printf("%d\n",abs(a1-a2)+abs(b1-b2)+abs(val1-val2)); } return 0; }
[/code]
相关文章推荐
- hystrix实用示例
- EJB学习(三)—消息驱动Bean
- hot code loading in nodejs
- response.getWriter().write()与out.print()的区别
- 1、让自己习惯c++
- Java的一些基本概念
- iOS 中的线程(2) --- GCD
- git简易入门(github)
- Linux-CentOS安装mysql5.6
- python中print不换行的方法
- 预测的原理及其实战(4)
- 相对路径和绝对路径
- Linux安装jdk1.8
- python的高性能web应用的开发与测试实验
- Nginx 命令
- BZOJ 2763: [JLOI2011]飞行路线(分层图最短路)
- QUT——An Easy Math Problem (三次函数求最大值)
- ubuntu apt-get 安装软件时package has no installtion candidate问题
- response.getWriter().write()与out.print()的区别(转)
- A. PawnChess