说说:此题要求求出从整数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;
}

Steps UVA 846的更多相关文章

  1. uva 846 - Steps

    找出步數與距離的關係即可得解. 0步最多能抵達的距離是0 1步最多能抵達的距離是1(1) 2步最多能抵達的距離是2(1 1) 3步最多能抵達的距離是4(1 2 1) 4步最多能抵達的距離是6(1 2 ...

  2. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  3. 【转】UVa Problem 100 The 3n+1 problem (3n+1 问题)——(离线计算)

    // The 3n+1 problem (3n+1 问题) // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 / ...

  4. PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版

    , '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorith ...

  5. uva 116 Unidirectional TSP (DP)

    uva 116 Unidirectional TSP Background Problems that require minimum paths through some domain appear ...

  6. UVA - 1153 Keep the Customer Satisfied(贪心)

    UVA - 1153 Keep the Customer Satisfied Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: ...

  7. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

  8. UVa 10795 - A Different Task 对称, 中间状态, 数位DP 难度: 3

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  9. [uva] 10067 - Playing with Wheels

    10067 - Playing with Wheels 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Ite ...

随机推荐

  1. Hibernate4读取Clob数据

    package cn.framework.dao.impl; import java.io.BufferedReader; import java.io.IOException; import jav ...

  2. jquery学习之AJAX

    1,关于AJAX的简单介绍 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准 ...

  3. perl 访问网站一些useragent的设置

    121.40.205.143 - - [22/Jun/2016:12:56:23 +0800] "GET /wechat/account.html HTTP/1.1" 200 34 ...

  4. iOS:点击button卡死

    场景:      在tableView的Cell中有一个button,我须要点击这个button然后使得其视图控制器上的一个视图改变frame,可是我点击这个button后,导致卡死,也不崩溃.所有事 ...

  5. Tiny server:小型Web服务器

    一.背景 csapp的网络编程粗略的介绍了关于网络编程的一些知识,在最后的一节主要就实现了一个小型的Webserver.这个server名叫Tiny,它是一个小型的可是功能齐全的Webserver.在 ...

  6. Ubuntu9.04更新源

    1.sudo gedit /etc/apt/sources.list 编辑你的源列表,加入以下列表中你认为适合你的,拷贝到你的列表中,然后保存列表. Archive.ubuntu.com更新serve ...

  7. switch case语句里面不能定义对象,有语法错误,除非加一个花括号

    最近发现一个问题呢 发现在switch的case里面不能去定义对象了,一定义对象就会报错了 仔细了解了一下在C或者C++中,只要是在任何一对花括号 “{ }”中定义的对象,那么该对象的作用域就局限在这 ...

  8. win8 远程桌面 你得凭证不工作

    今天在在登录azure远程桌面时,一直提示你的凭证不工作, 按照网上各种教程都不行, 后来发现在win8中用户名结构中,需要加上本机电脑名比如:“win8\administrator”.

  9. JavaScript 中的闭包和作用域链(读书笔记)

    要想理解闭包,应当先理解JavaScript的作用域和作用域链. JavaScript有一个特性被称之为“声明提前(hoisting)”,即JavaScript函数里声明的所有变量(但不涉及赋值)都被 ...

  10. mysql 服务启动报1607 error

    [问题说明] mysql曾经还是好好的,突然就不行了...不知道是否使用了腾讯C盘搬家工具引起的... watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2h ...