首页 > 其他 > 详细

hdu 1049 Climbing Worm

时间:2016-07-29 18:50:43      阅读:272      评论:0      收藏:0      [点我收藏+]

技术分享

解题思路:

1. 两种情况,0x1:井深度小于一次跳的高度.0x2:井深度大于一次跳的高度

2.如果 属于 0x1 则一次跳出

3.否则 本次解题中直接枚举跳的次数

   一直循环,直到 【每次跳的真实高度(一次高度减去滑下的高度)】*【次数(循环)】+【最后一次(一次的高度)】大于等于井深度

 得到次数

4. 输出:次数*2+1

     次数*2:每跳一次,休息一分钟

      +1   :最后一跳,直接跳出井

Ac code:

#include<stdio.h>
int main(void)
{
    int n,u,d;
    int sum,i;
    while(scanf("%d%d%d",&n,&u,&d)!=EOF&&n)
    {
        if(n<=u)sum=1;
        else
        {
            for(i=1;; i++)
                if(n<=((u-d)*i+u))
                    break;
            sum=2*i+1;
        }
        printf("%d\n",sum);
    }
    return 0;
}

 

错误版本,求大神指正:

sum 可以看成求得次数。

(n-u):去掉最后一跳

(u-d):每次跳的真实高度

取得最后一跳 / 每次的高度 , 并强制转换成 double +0.5

举例:

n=10 u=2 d=1:  8 / 1 +0.5 =8 ->8*2+1=17

 n=20 u=3 d=1: 17 /2 +0.5=9->9*2+1=19

错的不知所云

#include<stdio.h>
int main(void)
{
    int n,u,d;
    int sum;
    while(scanf("%d%d%d",&n,&u,&d)!=EOF&&n)
    {
            sum=(int)(((double)(n-u)/(u-d))+0.5);
            printf("%d\n",sum*2+1 );
    }
    return 0;
}

  

  

hdu 1049 Climbing Worm

原文:http://www.cnblogs.com/A--Q/p/5719353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!