码迷,mamicode.com
首页 > 其他好文 > 详细

Steps UVA 846

时间:2014-08-11 00:32:01      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:acm   算法   源代码   c   uva   

说说:此题要求求出从整数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: 0bubuko.com,布布扣xbubuko.com,布布扣y < 231. For

输入有一行包含一个整数n,是测试的组数。对于每组测试数据,一行有两个整数0bubuko.com,布布扣xbubuko.com,布布扣y < 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;
}











Steps UVA 846,布布扣,bubuko.com

Steps UVA 846

标签:acm   算法   源代码   c   uva   

原文地址:http://blog.csdn.net/u011915301/article/details/38474013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!