ECJTU_ACM 2014新生训练赛(二)1003 题解

来源:互联网 发布:外国搜图软件 编辑:程序博客网 时间:2024/04/28 08:32

滑板鞋

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 33   Accepted Submission(s) : 13

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

libin是个土鳖,小时候没看过电梯,现在见到电梯就要玩。。
但是这一天电梯坏了,libin要从第一层去n楼,他伤心的走楼梯去了(每层100级)。
一步两步,一步两步,一步一步似爪牙,似魔鬼的步伐,摩擦 摩擦,在这光滑的地上摩擦,摩擦。。。。
由于libin的滑板鞋太差了,所以导致他从第二层每层每秒走动的台阶数减少i/50,求出他什么时候到达n楼。(i为所在的楼层)

Input

有多组数据,每组数据有一个整数n(libin要去的楼层),一个实数k(开始时每秒走的台阶数)(0<n<=15,0<k<=3)。

Output

如果他到了目的地输出所用时间(保留三位小数),如果已经累死则输出-1。

Sample Input

1 14 115 1

Sample Output

0.000315.278-1

Author

moonlike 


解题思路: 只要注意所需使用的数据类型,直接暴力模拟其操作即可 。

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <sstream>#include <algorithm>#include <queue>#include <stack>#include <map>#include <set>#define PI 3.1415926using namespace std;double n;   ///楼层double k;   ///速度double t;   ///时间int main( ){    while(scanf("%lf %lf",&n, &k) != EOF)    {        t = 0;    ///对时间进行初始化        for(int i = 1;i < n;i++)     ///        {            if(i != 1)   ///第一层是不需要进行减速的            {                k -= i/50.0;                if(k <= 0)   ///一旦速度小于等于0,意味着某人会累死                {                    t = -1;   ///做标记                    break;   ///某人已经会累死,不需要再进行计算了,用 break 跳出整个for循环                }            }            t += 100/k;        }        if(t == -1)        {            printf("-1\n");        }        else        {            printf("%.3f\n",t);        }    }    return 0;}


0 0