首页 > 其他 > 详细

2018HDU多校联赛第六场 6373 Pinball

时间:2019-08-09 22:49:01      阅读:125      评论:0      收藏:0      [点我收藏+]

题意

给定一个斜面,从某处让一个小球作自由落体运动,求小球与斜面的碰撞次数(假设都为弹性碰撞)。

分析

题图如下,x轴、y轴是虚拟的。

技术分享图片

根据高中物理的套路,沿斜面方向分解重力加速度即可。

#include<bits/stdc++.h>
using namespace std;

const double g = 9.8;
const double EXP = 0.000001;
double a, b, x, y;

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%lf%lf%lf%lf", &a, &b, &x, &y);
        if(a * y + b * x < EXP)
        {
            printf("0\n");
            continue;
        }
        double sinn = b / sqrt(a*a + b*b), coss = a / sqrt(a*a + b*b);
        double all_t = sqrt(2 * ((x / coss) * (sinn  - 1 / sinn) + y ) / g);  //沿斜面的时间
        double t = sqrt(2 * (y + x * sinn / coss) / g);   //垂直斜面的单次时间
        //printf("%f  %f\n", all_t, t);
        int tmp = (int)((all_t + EXP) / t);
        printf("%d\n", (tmp + 1) / 2);
    }
    return 0;
}

 

2018HDU多校联赛第六场 6373 Pinball

原文:https://www.cnblogs.com/lfri/p/11329711.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!