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

滑板鞋

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 1
4 1
15 1

Sample Output

0.000
315.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.1415926
using 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值