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