zoukankan      html  css  js  c++  java
  • Link with Grenade 题解(物理题+球冠表面积公式)

    题目链接

    题目思路

    看到题完全不会啊。。。

    为啥群友的数学物理基础如此扎实

    放下官方题解

    随机从某球面上取点进行随机和使用角度进行两次积分实质上是一样的,因为这两种方法单位球面的面密度相

    同。手雷在水平面上的方向并不会影响到其是否炸到人,因此我们只需要关心竖直面。

    考虑转换参考系,给人和手雷都加上一个反向的重力加速度,则手雷做匀速直线运动,人做匀加速直线运动。

    (t)秒后,人的位置是固定的,而手雷的位置是一个圆,手雷可以炸到人的范围也是一个圆(如左下图)。作出

    如右下图所示的三角形,可以用余弦定理求得手雷可以炸到人的仰角( heta)

    根据球冠表面积公式,可以炸到人的部分的表面积为(2pi(vt)^2(1-cos heta)),球的表面积为(4pi(vt)^2) ,故

    答案为 (1-frac{(1-cos heta)}{2}),将余弦定理得到的 的表达式代入即可(注意特判炸不到和一定会炸到的情况)。

    自己的一些感想

    本来觉得是应该(1-2 heta/360) 但是其实不是,因为这不只是一个平面,而是一个球,所以要使用面积比,球冠表面

    积公式是用二重积分算的但我高数学的是啥啊 仔细去想想感觉这个题目挺有意思的

    代码

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define debug cout<<"I AM HERE"<<endl;
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pii;
    const int maxn=2e6+5,inf=0x3f3f3f3f,mod=1e9+7;
    const double eps=1e-6;
    ll t,v,r;
    ll qpow(ll a,ll b){
        ll ans=1,base=a;
        while(b){
            if(b&1) ans=ans*base%mod;
            base=base*base%mod;
            b=b>>1;
        }
        return ans;
    }
    signed main(){
        int _;scanf("%d",&_);
        while(_--){
            scanf("%lld%lld%lld",&t,&v,&r);
            ll a=5*t*t;
            ll b=v*t;
            ll ans=-1;
            if(a>=b+r||b>=r+a){
                ans=1;
            }else if(r>=a+b){
                ans=0;
            }else{
                ll co=(b*b+a*a-r*r)*qpow((2*a*b),mod-2)%mod;
                ans=((co+1)*qpow(2,mod-2)%mod+mod)%mod;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    
    
    不摆烂了,写题
  • 相关阅读:
    剑指offer--38.左旋转字符串
    剑指offer--37.和为S的两个数字
    剑指offer--35.数组中只出现一次的数字
    剑指offer--34.数字在排序数组中出现的次数
    剑指offer--33.丑数
    SSIS包定时执行
    在SSIS 的 64 位版本中不支持 Excel 连接管理器[转]
    sql中的sp_helptext、sp_help 、sp_depends
    SQL去除回车符,换行符,空格和水平制表符
    SQL Server中bcp命令的用法以及数据批量导入导出
  • 原文地址:https://www.cnblogs.com/hunxuewangzi/p/15126125.html
Copyright © 2011-2022 走看看