说说:此题要求求出从整数x到达整数y所要经过的最短步数,且第一步和最后一步必须为一,同一时候每一步都比前一步多一步,少一步或一样。如果想搞清楚每一步详细是如何走的,那么这道题是相当麻烦的。考虑到前后两步之间最多差一,那么一到最大数之间的每个数从左到右以及从右到左的时候必然都出现。那么我们能够预想如果这样一个数列。

1,2,3,....n-2,n-1,n,n-1,n-2....3,2,1,若数列的和小于y和x的差肯定是不行的。所以要调整n至刚好大于或等于y和x的差。显然当y与x的差恰好为数列的和那直接输出结果。否则构成y和x差的数列的最大值必然为n-1。这时,由于步数要最少,所以我们从最大的那个n-1開始一个一个尽量多的放数。终于把y-x的差放完之后,就可以求得最短步数。例:y-x=7,则可找到1,2,3,2,1是大于9的,那么8的数列中必存在1,2,1这种序列,这时7-4=4,最多能再放一个2。那还剩下一个1,最后填入就可以。

题目:

Steps

One steps through integer points of the straight line. The length of a step must be nonnegative and can be by one bigger than, equal to, or

如今你要通过几步从数轴的某点到达另外一点。每步的长度都是非负的并能够比前一步大一步,相等或小一步

by one smaller than the length of the previous step.

What is the minimum number of steps in order to get from x to y? The length of the first and the last step must be 1.

从x到达y的最少步数是多少?而且第一步和最后一步的长度一定为1

Input and Output

Input consists of a line containing n, the number of test cases. For each test case, a line follows with two integers: 0xy <
231. For

输入有一行包括一个整数n,是測试的组数。对于每组測试数据,一行有两个整数0xy <
231。对于每行測试数据

each test case, print a line giving the minimum number of steps to get from x to y.

输出一行给出从x到y的最少步数。

Sample Input

3
45 48
45 49
45 50

Sample Output

3
3
4

源码:

#include <stdio.h>

int n,x,y,q;

int main(){
int i,j,k,result; // freopen("input.txt","r",stdin);
scanf("%d",&n); while(n--){
scanf("%d%d",&x,&y); q=y-x;
if(q<=3){//小于三的特殊情况先处理
printf("%d\n",q);
continue;
} for(i=2;;i++)
if(i*i>=q)
break; if(i*i==q){
printf("%d\n",2*i-1);
continue;
}
else
i--; q-=i*i; result=2*i-1;
while(q){//从数列中最大的数開始放,放完为止
result+=q/i;
q=q-i*(q/i);
i--;
} printf("%d\n",result);
}
return 0;
}

最新文章

  1. Maven的Missing artifact问题解决
  2. eclipse — Failed to load the JNI shared library”……\jvm.dll问题原因以及解决方案
  3. NPOI简单应用
  4. 好好写,好好干-PHP基础(二)
  5. 【hadoop2.6.0】利用JAVA API 实现数据上传
  6. c#之第三课
  7. Java遇见HTML——JSP篇之JSP状态管理
  8. PHP XML笔记汇总
  9. [HIve - LanguageManual] Hive Operators and User-Defined Functions (UDFs)
  10. Brackets - 又一款牛x的WEB开发编辑器
  11. Unity3D 5.0简单的射线检测实现跳跃功能
  12. [转]C服务端与java客户端的socket通信注意事项
  13. php --with-mysql=mysqlnd
  14. 关于Myeclipse不能加载已有项目的问题
  15. 踩坑记:Tensorflow环境搭建
  16. touch修改文件时间戳
  17. 【服务器】如何在服务器发布网站?Sasa讲解
  18. [翻译] USING GIT IN XCODE [5] 在XCODE中使用GIT[5]
  19. Service 服务发现的两种方式-通过案例来理解+服务外部访问类型+selector-label
  20. mongodb 使用 robo3T 等工具添加用户之后还是 auth failed 的问题

热门文章

  1. MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
  2. Ubuntu下Chromium源码的编译
  3. SuSE(SLES)安装配置syslog-ng日志server,可整合splunk
  4. 无需安装Mono的Jexus
  5. POJ--3268--Silver Cow Party【SPFA+邻接表】
  6. 遍历指定包名下所有的类(支持jar)(转)
  7. BZOJ 3112 Zjoi2013 防守战线 单纯形
  8. [Java聊天室server]实战之五 读写循环(服务端)
  9. debian下使用siege进行压力测试
  10. 【Python】Coding the Matrix:Week 5 Perspective Lab