[vijos1072] 新年趣事之债务

题目描述

【题目背景】
  在HNSDFZ的信息组里,Vivian Snow、Charles和Sunnypig之间有着一种奇怪的债务关系:Vivian Snow欠了Charles一百块钱,Charles欠了Sunnypig一百块钱,Sunnypig欠了Vivian Snow一百块钱。
【问题描述】
  一天,三个人遇到了一起。由于他们都不够理智,一心想要回自己借出去的钱,于是互相之间追逐起来。最初,三个人分别站在一个边长为L正三角形的三个顶点上。某一个时刻,三个人同时开始以速度V匀速运动。他们运动的方向是这样的:每一个时刻,Vivian Snow运动的方向指向Sunnypig,Sunnypig运动的方向指向Charles,Charles运动的方向指向Vivian Snow,总之,每一个时刻,三个人都在尽快的接近各自欠自己债的人。最终,三个人都到达了同一个点上,并且通过和谈的方式解决了这一冲突。
  Xiaomengxian知道此事后,想写一篇报道,宣传这件事情。他想知道每个人走的路程的长度S,以及他们到达同一个点所需要的时间T。

输入格式

输入文件有两行。
第一行为一个实数L(0<=L<=1E100)。
第二行为一个实数V(0<=V<=1E100)。

输出格式

输出文件有两行。
第一行为一个实数S,保留一位小数。
第二行为一个实数T,保留一位小数。

样例数据

样例输入

13.05
0.56

样例输出

8.7
15.5

说明

所有单位均为国际标准单位。
Just For Fun :)

题目分析

三个人的运动路径如下图所示(图画的丑见谅)。
[vijos1072] 新年趣事之债务_第1张图片
对于每一个时刻,每个人的运动方向都沿着两人间的连线方向,大小为v,这样,在指向等边三角形中心方向上有一个分速度v’,大小为v在指向中心方向上的正投影大小,v’=v*cos30°。同理每个人在指向中心方向上的位移l’=l*(√3)/3,两者相除得t=(2/3)*(l/v)。由于运动的等时性,总路程为
s=t*v=(2/3)*l。

源代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
inline const int Get_Int() {
    int num=0,bj=1;
    char x=getchar();
    while(x<'0'||x>'9') {
        if(x=='-')bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9') {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;
}
double l,v;
int main() {
    scanf("%lf%lf",&l,&v);
    printf("%0.1lf\n",2*l/3);
    printf("%0.1lf\n",2*l/(3*v));
    return 0;
}

你可能感兴趣的:(物理)