3908 - 井底之蛙

通过次数

0

提交次数

0

时间限制 : 2 秒 内存限制 : 12800 MB

        一口废井里住着一只青蛙。有一天,青蛙在井边碰上了一只从海里来的大龟。 青蛙就对海龟夸口说: “你看,我住在这里多快乐!有时高兴了,就在井栏边跳跃一阵;疲倦了,就回到井里,睡在砖洞边一回。或者只留出头和嘴巴,安安静静地把全身泡在水里:或者在软绵绵的泥浆里散一回步,也很舒适。看看那些虾,谁也此不上我。而且,我是这个井里的主人,在这井里极自由自在,你为什么不常到井里来游赏呢!” 那海龟听了青蛙的话,倒真想进去看看。但它的左脚还没有整个伸进去,右脚就已经绊住了。它连忙后退了两步,把大海的情形告诉青蛙说: “你看过海吗?海的广大,哪止千里;海的深度,哪只千来丈。古时候,十年有九年大水,海里的水,并不涨了多少;后来,八年里有七年大早,海里的水,也不见得浅了多少

。可见大海是不受旱涝影响的。住在那样的大海里,才是真的快乐呢!” 井蛙听了海龟的一番话,青蛙决定去看看井外的世界。
        这个井深为h m,而这只青蛙在井底0的位置。白天青蛙能爬上a m高,但到了晚上,它就会掉落b m。这只青蛙很想早点看看外面的世界,所以他最快第几天可以看到。注意:他从第一天的白天开始
爬。

题目输入

输入一行h a b 。所有数据都小于10000且大于等于0。

题目输出

输出一行答案表示它最快第几天可以出来。如果爬不出来就输出-1。

输入/输出样例

输入格式

10 6 1

输出格式

2

C语言解答

#include<stdio.h>
int main()
{
    double h,a,b,n,s;
    while(scanf("%lf%lf%lf",&h,&a,&b)!=EOF)
    if(h>a&&a<=b) printf("-1\n");
    else
    {
        for(n=1;; n++)
        {
            s=a*n-(n-1)*b;
            if(s>=h) break;
        }
        printf("%.lf\n",n);
    }
    return 0;
}

C++解答

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include <fstream>
#include <limits>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cassert>
using namespace std;
int main()
{
    int i;
    double h,a,b;
    while(~scanf("%lf %lf %lf",&h,&a,&b))
    {
        if(a<=b)
        {
            if(h<=a)
                printf("1\n");
            else
                printf("-1\n");
        }
        else
        {
            double da=((h-a)/(a-b)+1);
            if(fabs(da-(int)da)>=1e-5)
                da++;
            printf("%d\n",(int)da);
        }
    }
return 0;
}