[NOIP1998 提高组] 进制位 题解

题目描述

在高为 HH 的天花板上有 nn 个小球,体积不计,位置分别为 0,1,2,⋯ ,n−1。在地面上有一个小车(长为 L,高为 K,距原点距离为 (S1)。已知小球下落距离计算公式为 d=0.5×g×(t2),其中 g=10,tt 为下落时间。地面上的小车以速度 VV 前进。

如下图:

小车与所有小球同时开始运动,当小球距小车的距离 ≤0.0001(感谢 Silver_N 修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。

请你计算出小车能接受到多少个小球。

输入格式

H,S1,V,L,K,n(1≤H,S1,V,L,K,n≤100000)

输出格式

小车能接受到的小球个数。

输入输出样例

输入 #1

5.0 9.0 5.0 2.5 1.8 5

输出 #1

1

说明/提示

当球落入车的尾部时,算作落入车内。

【题目来源】

NOIP 2002 提高组第三题

在这里提前说一下,如果这篇题解过了,那

本蒟蒻就累计通过题解33篇了!|                                                                       本蒟蒻就累计通过题解30篇了!|                                                                       ​

这一题呢,要用到double的地方比较多,反而不用怎么在意精度...

其实我是用了贪心的思想(程序里说),考虑到最早接的球和最晚的球中间一定都能接到

所以我的代码是这样的:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>  //打好文件头
using namespace std;
double gao,s1,su_du,l,k,n;  //用double来定义变量
int main()
{
    scanf("%lf%lf%lf%lf%lf%lf",&gao,&s1,&su_du,&l,&k,&n);  //输入
    double Maxtime=sqrt(gao/5);  //球落地前的最大时间
    double Mintime=sqrt((gao-k)/5);  //这里还是要算出最短的时间的
    int Fast_ball=int(s1-Mintime*su_du+l);  //最早的小球用变量记录下来
    int Late_ball=int(s1-Maxtime*su_du);  //最晚的小球也要用变量记录下来
    Fast_ball=fmin(Fast_ball,n);  //这两个英文翻译你给多少分?
    Late_ball=fmax(Late_ball,0);  //你能活到(   )岁[括号里就是给出的分数]
    printf("%d",Fast_ball-Late_ball);  //最后输出最早接球的编号减最晚的
    return 0;  //这就完美结束啦~
}

 在百忙之中写一篇题解也比较辛苦,别忘了点个赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值