poj-1563

来源:互联网 发布:sql全国地址数据库 编辑:程序博客网 时间:2024/05/16 11:24
//364K  0MS G++#include <cstdio>#include <cstring>using namespace std;double fatigueFactor;double slideDistance;double climbDistance;double wellHeight;void solve() {    int day = 1;    double height = 0;    double curClimbDistance = climbDistance;    while(1) {        // printf("%lf\n", curClimbDistance);        height += curClimbDistance;        if (height > wellHeight) {            printf("success on day %d\n", day);            return;        }        height -= slideDistance;        if (height < 0) {            height = 0;            printf("failure on day %d\n", day);            return;        }        // if (height == 0) {                    // }        curClimbDistance -= (climbDistance*fatigueFactor)/100;        if (curClimbDistance < 0) {            curClimbDistance = 0;        }        day++;    }}int main() {    while(scanf("%lf %lf %lf %lf", &wellHeight, &climbDistance,            &slideDistance, &fatigueFactor) != EOF) {        if (!wellHeight) {            return 0;        }        solve();    }}

模拟水题,不过题目描述的不够清晰,

比如题目说如果蜗牛slid到了井底,那么就算failure,

但是在真实判断时,是蜗牛当前高度只有小于slid的长度时,才算失败,

所以 1 1 1 1这个case是第2天失败,第一天爬了1feet,然后晚上下滑1feet,理论上讲现在应该是滑到井底了,但是这种情况不算失败,

只有在第二天,爬了0.99feet,下滑1feet,高度成了负数,才算失败,

发现自己对这种题需要多练习,模拟的思路在写code的时候貌似对梳理逻辑有帮助,因此简单逻辑程序本身就是对现实的模拟。


0 0
原创粉丝点击