题解 UVa11715

时间:2019-08-30
本文章向大家介绍题解 UVa11715,主要包括题解 UVa11715使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Blog

物理题。如果您的英语实在太差,请看我的翻译。

数据共有n组。对于每组数据,物体运动存在5个物理量:初速度\(u\),末速度\(v\),加速度\(a\),位移\(x\),时间\(t\)。给出其中三个量,求剩余两个量。

输入输出规则:先输入一个p。

\(p=1\)时:给出\(u,v,t\),输出\(s,a\);

\(p=2\)时:给出\(u,v,a\),输出\(s,t\);

\(p=3\)时:给出\(u,a,s\),输出\(v,t\);

\(p=4\)时:给出\(v,a,s\),输出\(u,t\);

运动学有3个众所周知的公式:

\(s=u·t+0.5·a·t^2\);

\(v=u+a·t\);

\(v^2-u^2=2·a·s\);

利用3个公式变形,分类讨论:

\(u=v-a·t;\)

\(a=(v-u)/t;\)

\(t=(v-u)/a;\)

\(u=\sqrt{v^2-2·a·s};\)

\(v=\sqrt{u^2+2·a·s};\)

\(a=(v^2-u^2)/(2·s);\)

\(s=(v^2-u^2)/(2·a);\)

\(s=(u+v)/(2·t);\)

用一个switch(if也行)进行分类讨论,看看给出的是哪几个量,套以上公式进行求解。

记得用

printf("%.3lf",ans);

保留3位小数。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int p,num=0;
    cin>>p;
    while(p)//p=0时退出循环
    {
        num++;
        double u,v,a,t,s;
        switch(p)
        {
            case 1:
                cin>>u>>v>>t;
                a=(v-u)/t;
                s=u*t+0.5*a*t*t;
                printf("Case %d: %.3lf %.3lf\n",num,s,a);
                break;
            case 2:
                cin>>u>>v>>a;
                t=(v-u)/a;
                s=u*t+0.5*a*t*t;
                printf("Case %d: %.3lf %.3lf\n",num,s,t);
                break;
            case 3:
                cin>>u>>a>>s;
                v=sqrt(u*u+2*a*s);
                t=(v-u)/a;
                printf("Case %d: %.3lf %.3lf\n",num,v,t);
                break;
            case 4:
                cin>>v>>a>>s;
                u=sqrt(v*v-2*a*s);
                t=(v-u)/a;
                printf("Case %d: %.3lf %.3lf\n",num,u,t);
                break;
        }
        
        cin>>p;//循环读入
    }
    
    return 0;
}

原文地址:https://www.cnblogs.com/s-t-a-r-d-u-s-t/p/11436867.html